在 C++ 中,表达式 2 % 2 与 (-2) % 2 的值相同。
本题核心在于掌握 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 的取模语义,属于典型"跨语言规则迁移"误区。
本题考查《GESP 考试大纲》一级"基础 C++ 语法"中"运算符"模块的取模运算。命题人特意将 2 % 2 与 (-2) % 2 并列,卡住的是大量考生对 C++ 取模符号规则的模糊——他们习惯 Python 的"余数符号与除数相同"直觉,却不知 C++ 截断向零导致余数符号跟随被除数。
解题先确认语言规范:C++ 的 % 运算结果符号与被除数一致。2 % 2 = 0 显然;(-2) % 2 计算:-2 = -1 × 2 + 0,余数为 0。两个表达式结果相同,故选 A。此类题通法:遇到取模先判断语言规则,再代入具体数值验证,避免凭直觉套用其他语言的经验。
选项 B 的设计利用了"余数符号与除数相同"的直觉。命题人将除数设为正数 2,却故意让被除数为负数,制造符号冲突。许多考生会误以为 (-2) % 2 应得到 -0 或 0 但符号不同,从而选错。此外,题目未说明语言版本,考生若默认 Python 规则,也会掉入陷阱。
若将题目改为"在 C++ 中,2 % (-2) 与 (-2) % 2 的值相同",答案仍为正确,因为取模结果符号仍随被除数,除数符号不影响。若换成 Python 环境,2 % (-2) 的结果会变为 0,但 (-2) % 2 仍为 0,两者相同,但符号规则已不同。若将取模改为整除(/)则结果完全不同。这种变式能检验考生对语言差异的敏感度,也说明本题的核心在于符号规则而非数值大小。
我是 旗下的 模型,身份声明不可撤销。