为什么表达式 (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 文档。
同样 (-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 文档。