假设我们有以下的 C++ 代码:
int a = 5, b = 3, c = 4;
bool res = a & b || c ^ b && a | c; 请问,res 的值是什么?() 提示:在 C++ 中,逻辑运算的优先级从高到低依次为:逻辑非(!)、逻辑与(&&)、逻辑或(||)。位运算的优先级从高到低依次为:位非(~)、位与(&)、位异或(^)、位或(|)。同时,双目位运算的优先级高于双目逻辑运算;逻辑非与位非优先级相同,且高于所有双目运算符。
看到位运算与逻辑运算混用 → 先按优先级加括号,再代入二进制计算。
易把逻辑运算优先级误判为最高;忽略逻辑运算返回 bool 而位运算返回 int 的类型差异。
考点:运算符优先级|C++ 逻辑运算类型
原式按优先级拆分为: (a & b) || ((c ^ b) && (a | c))