为什么括号中的AND与没有的评估不同?
在 C++ 中,4&1 == 0
, 和1&1 == 1
. 但是,4&1 != 1&1
评估为0
,而不是1
,但(4&1) != (1&1)
仍按1
预期评估。为什么是这样?
回答
关系运算符!=
的优先级高于按位 AND &
。
因此表达式
4 & 1 != 1 & 1
将被解析为
4 & (1 != 1) & 1
- The C++ precidence rules are easy. * binds tighter than +, and everything else just use brackets. (ok, unary is tighter than binary... usually)