print(1!=1 & 1!=1)
print(1!=1 & 2!=2)
为什么两个返回不同的值?
答案 0 :(得分:6)
&
的{{3}}比!=
高,因此您的陈述等同于
print(1!=(1 & 1)!=1)
print(1!=(1 & 2)!=2)
1&1为1,而1&2为0 *,因此等价于
print(1!=1!=1)
print(1!=0!=2)
因为!=
支持precedence,所以这些等效于
print((1!=1) and (1!=1))
print((1!=0) and (0!=2))
等同于
print(False and False)
print(True and True)
等同于
print(False)
print(True)
(**如果您想“很奇怪,在布尔型上下文中求值时,我认为1和2都是True。不应该将它们和在一起求和为True吗?”,仅当您使用布尔AND运算符and
,而不是按位AND运算符&
。)