下列 C++ 代码执行的输出是( )。
int a = 4 + -2 * 3;
cout << a;看到混合运算表达式,先写优先级表,乘法高于一元负号,一元负号高于加法,然后按序计算。
选项 B 6 误把加法提前,选项 C 18 忽略负号,选项 D 以为语法错误。最阴险的是 -2 这个一元负号。
本题考查《GESP 考试大纲》一级 C++ 中的"运算符优先级"模块。命题人放这道题,就是针对绝大多数学员对 C++ 表达式求值规则(乘法优先于加法,一元负号优先级高于二元加法)理解不深的不确定性,用一道极简的混合运算,直接暴露"看到 -2 就以为是减法"或"加法先算"的常见误区。
解题通法:遇到混合运算表达式,先写优先级表,乘法高于一元负号,一元负号高于加法,然后按序计算。本题的表达式 4 + -2 * 3 中,一元负号 - 是最高优先级的运算符之一,所以先计算 -2,得到 -2;再计算乘法 -2 * 3,得到 -6;最后计算加法 4 + (-6),得到 -2。因此输出 -2,对应选项 A。
这类题的通法是"优先级表 + 逐步代入",只要记住乘法、一元负号、加法的优先级顺序,就能快速定位答案。