GESP 二级 · GESP 202509 C++ 二级 第 5 题

选择题 · 答案 D

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

题目

下面 C++ 代码执行,其输出是( )。

a, b = 3, 4;
c = a == b;
cout << a << ' ' << b << ' ' << c;
答案:D

解题思维

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

常见错误

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

详细解析(节选)

【考点】变量赋值|关系运算符|cout 输出

【考纲定位】本题属于 GESP 二级“基础语法”模块,命题人专门用逗号表达式+比较运算的组合,卡住对运算符优先级和布尔值转换不熟的选手。

【解题思维】逗号表达式 a, b = 3, 4; 按从左到右依次执行,等价于 (a = 3), (b = 4),因此 a 得 3、b 得 4。c = a == b; 中比较结果为 false,C++ 中 false 转为整型 0,故 c = 0。最后 cout 按顺序输出 a、b、c,得到 "3 4 0"。

【陷阱拆解】错误选项 B、C 是把逗号表达式误解为"同时赋值",导致 a、b 都被改成 3 或 4;选项 A 则忽略了比较结果 0,误以为会输出 1。命题人利用"逗号运算符优先级最低"和"布尔值转整型"两个易错点,只背结论不推演就会踩坑。

【反命题思维】若把逗号改成 a = 3; b = 4; 结果不变;若把比较改成 a != b,c 就会变成 1,输出 "3 4 1"。刷到类似题先自问:逗号表达式到底怎么算?比较结果是什么类型?

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