在 C++ 中,cout << (3, 4, 5) 可以输出 $3$ $4$ $5$,且每个输出项之间用空格分开。( )
答案B。文件重定向后cout的输出被写入文件。程序本身无法确定输出目的地。
文件重定向后程序行为不变,只是I/O目的地改变了。程序无法区分。
【考点】C++ 运算符优先级|逗号运算符|表达式求值
1. 🎯 考纲定位:GESP 二级 C++ 考纲第 4 章“表达式与运算”明确列出逗号运算符。命题人卡住的是考生对“逗号运算符”的陌生感——绝大多数人看到括号里的数字序列,下意识当成列表或数组,却不知 C++ 里逗号是运算符不是分隔符。
2. 🧠 解题思维:看到题先想:括号里是运算符还是语法结构?关键观察:逗号在表达式里是“逗号运算符”,优先级极低,比赋值还低。推理链:(3, 4, 5) 其实是 ((3, 4), 5),先算 3, 4 得 4,再算 4, 5 得 5,整个括号值就是 5。cout << 5 只输出一个数字,中间不可能有自动空格。通法:遇到括号内多个常量或表达式,先拆解运算符,别被视觉上的“列表”误导。
3. 🪤 陷阱拆解:选项 A 错误选项设计:利用视觉惯性,把逗号当成“分隔符”,像 Python 或数学列表那样理解。阴险细节:题目说“每个输出项之间用空格分开”,暗示有多个输出项,但实际只有一个值。如果你只背 cout 输出格式,不理解逗号运算符的语义,就会掉进“以为有多个值”的陷阱。
4. 🔄 反命题思维:命题人视角:如果把 (3, 4, 5) 改成 cout << 3, 4, 5(去掉括号),会变成三个输出项,中间有空格,答案就反了。提醒:刷到类似题,先问自己“逗号在这里是运算符还是分隔符?”