去年提高组初赛第9题:
假设我们有以下的 C++ 代码:
int a = 5, b = 3, c = 4;
bool res = a & b || c ^ b && a | c;
请问,res 的值是什么?() 提示:在 C++ 中,逻辑运算的优先级从高到低依次为:逻辑非(!)、逻辑与(&&)、逻辑或(||)。位运算的优先级从高到低依次为:位非(~)、位与(&)、位异或(^)、位或(|)。同时,双目位运算的优先级高于双目逻辑运算;逻辑非与位非优先级相同,且高于所有双目运算符。
A. true
B. false
C. 1
D. 0
这道题选A,但是C哪里错了?在计算机中,true和1难道不是完全一样的吗,而且如果对程序进行单步调试(不是输出调试!),bool变量检测到的值显示的从来都是0或1而非true或false,谁能解释下这是怎么回事?