GESP 一级 · GESP202609 C++ 一级 第 7 题

选择题 · 答案 D · 考点:运算符优先级

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

题目

执行下面代码后,b 的值会是(  )。

int b = 8;
++b *= 2 + 1;
答案:D

考点

运算符优先级

解题思维

看到 ++b *= 2 + 1 先想运算符优先级:前缀 ++ 比 *= 高,所以先执行 ++b 得到 9,再执行 9 *= 3 即 b = 9 * 3 = 27。这类题通法是:遇到复合赋值,先算左操作数,再算右操作数,最后执行赋值。

常见错误

错误选项 A(18) 把 ++b 当成 b++ 后置,先乘后增;B(17) 误以为 ++b 只加 1 且 *= 优先级更高;C(19) 把 2+1 算成 3 却忘了左操作数已变 9。陷阱在于 ++b 是前缀,先自增再参与运算,而 *= 是复合赋值,整体先算左操作数。

详细解析(节选)

考纲定位 本题考查 GESP 一级 C++ 大纲中"运算符优先级与结合性"核心考点。命题人专门设置这道题,就是要卡住那些只背口诀、不懂表达式求值顺序的考生。

解题思维 看到 ++b *= 2 + 1 先想运算符优先级:前缀 ++ 比 *= 高,所以先执行 ++b 得到 9,再执行 9 *= 3 即 b = 9 * 3 = 27。这类题通法是:遇到复合赋值,先算左操作数,再算右操作数,最后执行赋值。

陷阱拆解 错误选项 A(18) 把 ++b 当成 b++ 后置,先乘后增;B(17) 误以为 ++b 只加 1 且 *= 优先级更高;C(19) 把 2+1 算成 3 却忘了左操作数已变 9。陷阱在于 ++b 是前缀,先自增再参与运算,而 *= 是复合赋值,整体先算左操作数。

反命题思维 若把 ++b 改成 b++,答案变 24;若把 *= 改成 *,答案变 27 但类型不匹配;若把 2+1 改成 2-1,答案变 16。这类题本质是考表达式求值顺序,而非单纯算术。

同考点真题

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