C++ 表达式 2 * - '2' / 4 的值是 -1 。
先识别运算符优先级,一元负号高于乘除;再处理字符常量转整型('2'为50);最后按左结合顺序计算:2×(-50)=-100,-100÷4=-25。
字符常量'2'的ASCII值是50,不是2;一元负号优先级高于乘除,所以先算-50;整数除法-100÷4=-25,不是-24。
GESP二级C++大纲中,运算符优先级属于"表达式与语句"模块,字符常量与整型转换属于"数据类型"模块。命题人放这道题,就是要卡住那些"看到字符就以为是字符"的考生——他们往往忽略ASCII码转换,直接把'2'当成2算,导致整除结果偏差。
看到题先想优先级。一元负号(-)优先级高于乘除(*、/),所以- '2'先算。字符常量'2'在C++中会被自动转换为整型,其ASCII码是50,不是2。然后按左结合顺序计算:2 * -50 = -100,再-100 / 4 = -25。题目说结果是-1,显然错误。