为什么括号中的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)