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

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

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

题目

下列 C++ 表达式与 2 * - 2 % 3 的值相同的是(  )。

答案:A

考点

运算符优先级

解题思维

这题考的是运算符优先级陷阱。C++里一元负号优先级高于乘除取模,而乘除取模同级且左结合。所以2 * -2 % 3 先算 -2 再算 2 * (-2) = -4,最后 -4 % 3 = -1。关键要记住:负号只作用于紧邻的数,不是对整个式子取反。

详细解析(节选)

1. 考纲定位

GESP 一级第二模块"表达式与运算符"第 3 点"运算符优先级与结合性"。命题人专门放这道题,就是要卡住 90% 考生对一元负号优先级和乘除取模左结合的模糊认知。

2. 解题思维

看到题先想运算符优先级表:一元负号(-)优先级最高,乘除取模(*、/、%)同级且左结合。所以 2 * - 2 % 3 等价于 ((2 * -2) % 3)。

最终值 = -1。

3. 陷阱拆解

错误在于把 -2 % 3 当成 -(2 % 3),实际 -2 % 3 = -2,然后 2 * (-2) = -4。

括号强制先算 2 % 3 = 2,再算 -2,最后 2 * (-2) = -4。

一元负号优先级最高,先算 -2,然后 % 和 * 左结合:2 % -2 = 0,0 * 3 = 0。

4. 反命题思维

如果把原题改成 2 * -3 % 4,答案仍是 A;若把 % 换成 / 则 D 会突然变 -1(因为整数除法截断);若把一元负号改成括号 2 * -(2 % 3),正确选项就变成 B。这类变式都能精准考察优先级与结合性的理解深度。

同考点真题

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