优先级问题,与预计的结果不一样

(12&1==0)和(12&1)==0为什么两个输出结果不一样,明明&的优先级要比==的要高啊

你的理解错误,“==”运算要比“&”运算优先级更高

前面是逻辑运算的结果,后面是算数运算的结果,当然不一样啦!

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 以下回答来自chatgpt:

    答:问题出在括号的使用上。在第一个表达式中,没有用括号把(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
    

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^