繁体   English   中英

带有 If 语句和比较运算符的位运算符。 这个 if 语句是如何工作的?

[英]Bitwise Operator with If Statement and comparison Operators. How does this if statement work?

a = 2
b = 1
if a == 2 | b == 1:
    print(a, b)

这不会打印 a & b 的值

a = 2
b = 1
if ((a == 2) | (b == 1)):
    print(a, b)

这将打印值

为什么这样?

Python 中的运算符==的优先级低于运算符| . 所以:

a == 2 | b == 1

相当于:

a == (2 | b) == 1

反过来,这相当于:

(a == (2 | b)) and ((2 | b) == 1)

鉴于a==2 ,至少有一个子表达式必须为假,而与b无关。

| 是按位OR运算符,它的优先级高于== 因此,如果不使用括号,则2 | b 2 | b在第一个程序的开始处执行。

(2 | b) -> (2 | 1) -> (3)

然后当检查a==3时,它返回 False,因为a=2

我认为您可以使用or代替| 如果您想通过检查 a 和 b 的值来执行该语句。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM