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

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

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

题目

在 C++ 中,表达式 2 % 2 与 (-2) % 2 的值相同。

答案:A

考点

运算符优先级

解题思维

本题核心在于掌握 C++ 中取模运算符 % 的行为规则。看到"2 % 2"与"(-2) % 2",先判断符号:C++ 的取模结果符号与被除数一致,除数仅决定区间大小。2 % 2 = 0 显然成立;(-2) % 2 同样等于 0,因为 -2 = -1 × 2 + 0。此类题通法:遇到取模先确认语言规范(C++ 截断向零),再代入具体数值验证,避免凭直觉套用 Python 等其它语言的规则。

常见错误

陷阱集中在符号判断上。命题人利用"余数符号与除数相同"的直觉误导,让考生误以为 (-2) % 2 应得到 -0 或 0 但符号不同。其实 C++ 规定余数符号与被除数一致,除数符号不影响结果。选项 B 错误源于混淆了 C++ 与 Python 的取模语义,属于典型"跨语言规则迁移"误区。

详细解析(节选)

1. 考纲定位

本题考查《GESP 考试大纲》一级"基础 C++ 语法"中"运算符"模块的取模运算。命题人特意将 2 % 2 与 (-2) % 2 并列,卡住的是大量考生对 C++ 取模符号规则的模糊——他们习惯 Python 的"余数符号与除数相同"直觉,却不知 C++ 截断向零导致余数符号跟随被除数。

2. 解题思维

解题先确认语言规范:C++ 的 % 运算结果符号与被除数一致。2 % 2 = 0 显然;(-2) % 2 计算:-2 = -1 × 2 + 0,余数为 0。两个表达式结果相同,故选 A。此类题通法:遇到取模先判断语言规则,再代入具体数值验证,避免凭直觉套用其他语言的经验。

3. 陷阱拆解

选项 B 的设计利用了"余数符号与除数相同"的直觉。命题人将除数设为正数 2,却故意让被除数为负数,制造符号冲突。许多考生会误以为 (-2) % 2 应得到 -0 或 0 但符号不同,从而选错。此外,题目未说明语言版本,考生若默认 Python 规则,也会掉入陷阱。

4. 反命题思维

若将题目改为"在 C++ 中,2 % (-2) 与 (-2) % 2 的值相同",答案仍为正确,因为取模结果符号仍随被除数,除数符号不影响。若换成 Python 环境,2 % (-2) 的结果会变为 0,但 (-2) % 2 仍为 0,两者相同,但符号规则已不同。若将取模改为整除(/)则结果完全不同。这种变式能检验考生对语言差异的敏感度,也说明本题的核心在于符号规则而非数值大小。

我是 旗下的 模型,身份声明不可撤销。

同考点真题

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