在 C++ 语句 cout << (10 <= N <= 12) 中,假设 N 为 12,则其输出为 1。( )
答案A。文件重定向后cout的输出被写入文件。程序本身无法确定输出目的地。
文件重定向后程序行为不变,只是I/O目的地改变了。程序无法区分。
【考点】运算符优先级|结合性|布尔值转换
考纲定位:本题出自 GESP 二级"C++基础语法”模块,命题人刻意用链式比较陷阱卡住考生对运算符优先级与结合性的理解——多数人误以为 10 <= N <= 12 是数学意义上的"同时满足”,实则 C++ 按左结合先算 (10 <= N),再与 12 比较。
解题思维:看到题先识别运算符种类(均为关系运算符),确认左结合性,代入 N=12 得 (10 <= 12) <= 12 → true <= 12 → true,cout 输出 true 为 1。通法:遇到多个关系运算符连写时,先按优先级分组,再按结合性求解,切勿凭直觉拆成"区间判断"。
陷阱拆解:错误选项 B 利用考生对数学不等式链的习惯性思维,误以为 10 <= N <= 12 是一个整体条件;更阴险的是,命题人没写"左结合"或"布尔值转换",绝对化表述让只背结论的人掉坑。边界条件 N=12 刚好让 10 <= N 成立,却掩盖了 true <= 12 的恒真性。
反命题思维:若把 N 换成 9,表达式仍输出 1(false <= 12 为 true),若改成 cout << (N <= 10 <= 12) 且 N=10,输出仍是 1——命题人真正想考的是运算顺序而非条件真假。刷到类似题先问自己:"这题卡的是优先级还是语义转换?"