C++ 表达式 10 - 3 * (2 + 1) % 10 的值是()。
看到表达式别急着从左往右硬算,先圈出括号,再盯着乘除模这一档,最后才是加减。这道题就是考运算符优先级和同级从左到右的结合性,按这个顺序走一遍就稳了。
最容易栽跟头的就是忽略括号优先,把(2+1)当成2,直接算成10-6%10=4,或者把%当成普通除法,觉得3*3/10等于0,最后10-0=10,完全跑偏。还有人会误以为%比*优先级低,导致运算顺序错乱,算出9%10=9,结果10-9=1,虽然碰巧蒙对,但逻辑是错的。另外,如果粗心把10-3*3%10看成10-3=7,7*3=21,21%10=1,这种乱序计算也是典型错误。
考点与命题视角:这道题考查的是C++中运算符优先级和结合性。命题人特意选了10 - 3 * (2 + 1) % 10,就是为了卡住那些“看到表达式就机械从左到右算”的初学者。他们往往忽略括号优先性和乘除优于加减的层级关系,这是C++入门最容易栽跟头的地方。同时,%(取模)和*(乘法)优先级相同,但结合性是从左到右,这里故意把%放在后面,看学生是否真的理解“同级从左往右”的规则,而不是凭直觉把后面的%先算。这种“符号识别陷阱”在GESP一级考试中非常典型,因为一级学生刚开始接触表达式,对优先级敏感度不足。从考频数据看,基础语法类题目在GESP一级中占比极高(2023年287题、2024年413题、2025年401题),说明命题人持续重视基础运算规则的考查,未来这类混合运算题仍会高频出现。