(12&1==0)和(12&1)==0为什么两个输出结果不一样,明明&的优先级要比==的要高啊
你的理解错误,“==”运算要比“&”运算优先级更高
前面是逻辑运算的结果,后面是算数运算的结果,当然不一样啦!
不知道你这个问题是否已经解决, 如果还没有解决的话:答:问题出在括号的使用上。在第一个表达式中,没有用括号把(12&1)和0括起来,导致先执行了关系运算符“==”,再执行位运算符"&",最后得到1==0的结果,即False。而在第二个表达式中,用了括号把(12&1)和0括起来,保证了先执行位运算符"&",再执行关系运算符"==",最后得到12 & 1 == 0的结果,即True。
代码演示:
# 第一个表达式
result1 = 12 & 1 == 0
print(result1) # False
# 第二个表达式
result2 = (12 & 1) == 0
print(result2) # True