为什么表达式(0 == 0&1 == 1)评估为False?

Pol*_*enn 6 python operators operator-precedence

类似地(-1 == - 1&1 == 1)也是假的.

如果这是显而易见的事情而道歉,但我无法找到解释.

cs9*_*s95 14

&按位AND运算符.如文档中所述,Bitwise运算符的优先级高于逻辑运算符,因此

0 == 0 & 1 == 1
Run Code Online (Sandbox Code Playgroud)

0 == (0 & 1) == 1
Run Code Online (Sandbox Code Playgroud)

你可以想象它从那里走下坡路:

   0 == (0 & 1) == 1
=> 0 == 0 == 1
=> 0 == 0 and 0 == 1
=> True and False 
=> False
Run Code Online (Sandbox Code Playgroud)

假设你想要的是一个逻辑AND,python的方法是使用and:

0 == 0 and 1 == 1
Run Code Online (Sandbox Code Playgroud)

这让你True如你所愿.


Sha*_*dow 5

让我们打破这个.

这里最优先的标志是括号.除了我们包装整个表达式,所以他们什么都不做.

接下来我们有按位运算符&.

0 & 1等于0.

这让我们失望了 0 == 0 == 1

由于0不相等1,我们得到False.

作为参考,这里是关于运算符优先级的python文档.