为什么表达式 (0==0 & 1==1) 的计算结果为 False?

Why is the expression (0==0 & 1==1) evaluating to False?

同样 (-1==-1 & 1==1) 也是假的。

抱歉,如果这是显而易见的事情,但我找不到解释。

& 按位 AND 运算符。 documentation中提到,位运算符的优先级高于逻辑运算符,所以

0 == 0 & 1 == 1

变成

0 == (0 & 1) == 1

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

   0 == (0 & 1) == 1
=> 0 == 0 == 1
=> 0 == 0 and 0 == 1
=> True and False 
=> False

假设您想要的是逻辑与,python 方法是使用and:

0 == 0 and 1 == 1

如您所愿True

让我们打破这个。

此处优先级最高的符号是括号。除了我们包装整个表达式,所以他们什么都不做。

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

0 & 1 等于 0.

这给我们留下了 0 == 0 == 1

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

作为参考,这里是关于 operator precedence 的 python 文档。