GESP 二级 · GESP 202506 C++ 二级 第 18 题

判断题 · 答案 B · 考点:运算符优先级

← 整套速查表 GESP 二级 全部真题

题目

下列 C++ 代码执行后,其输出为 $10\ 20$,即 a == b 和 b == a 对 $a$ 和 $b$ 的值没有任何影响。( )

int a = 10, b = 20;
a == b;
b == a;
cout << (a, b);
答案:B

考点

运算符优先级

解题思维

答案B。追踪程序输出时注意整数除法截断和循环条件的边界值。变量初始值对结果影响很大。

常见错误

整数除法截断容易忽略!if(n%i==0)中%是取余运算不是除法。

详细解析(节选)

【考点】逗号运算符|运算符优先级|C++表达式求值

看到逗号运算符,第一反应是"它是不是赋值"?错,a == b 是关系表达式,返回布尔值;b == a 同理。关键是 (a, b),逗号运算符性质:先算左表达式(丢弃结果),再算右表达式(返回其值)。所以整个表达式等价于 b,cout 只输出 b 的值 20。

A 选项陷阱在于利用考生对 == 的视觉惯性误判为赋值,或把 (a, b) 当成序列输出。命题人特意用 == 而非 =,就是卡住"符号混淆"弱点;逗号运算符在 C++ 优先级表里最低,若学生没掌握,会以为它像 a, b 那样分别输出,完全违背语法规范。

若把 == 换成 =,则 a 变为 20,输出 20 20;若去掉括号写成 cout << a, b;,则先输出 a 再输出 b。刷到此类题先问自己:这个逗号是运算符还是分隔符?

同考点真题

在 OI伴学 里做这道题
登录后可计时作答、查看完整六段式解析,并按你的错题自动生成同类练习。
去刷题先做一次 AI 学情诊断