下列 C++ 表达式与 -2 * 2 % 4 的值不同的是( )。
答案C。根据计算机/编程基础知识分析判断。
仔细审题,注意"不正确""不属于""不是"等否定词。用排除法缩小范围。
【考点】运算符优先级|取模运算|负数运算规则
---
1. 🎯 考纲定位 本题考查 GESP C++ 一级"运算符优先级与负数运算"模块。命题人专门设计这题,就是为了筛掉那些只背"负数取模得正数"口诀,却不懂 C++左结合规则的考生。
2. 🧠 解题思维 先算目标:-2 * 2 % 4 按左结合,即 (-2 * 2) % 4 = -4 % 4 = 0。A项-(2*2)%4 得-4%4=0;B项(-2*2)%4 得-4%4=0;D项(2*2)%-4 得4%-4=0。只有C项-2*(2%4) 先算括号内2%4=2,再-2*2=-4,结果不等于0。
3. 🪤 陷阱拆解 命题人最阴险的陷阱在C项:它用括号强行改变了运算顺序,让考生误以为"负数取模"永远是正数。实际上,C++里-2*(2%4) 和 -2*2%4 本质不同,前者先算模再乘,后者先乘再模。如果你只背结论不推步骤,就会掉进这个"括号偷换优先级"的坑。
4. 🔄 反命题思维 从命题人角度看,若把C项改成-2 % (2 * 4),答案会立刻变回0;若把D项改成(2 * 2) % 4,也还是0。这说明命题人真正想考的是"括号是否改变了左结合顺序",而不是"负数取模的正负号"。刷到类似题,先问自己:这括号是改变优先级,还是改变运算对象?