逻辑"与"和位与&的区别
我在写一个练习题的代码,目的是找出最大的奇数。但是我遇到了一个问题,就是当我用 & 符号把两个语句连接起来时,结果总是显示为真,即使第二个语句单独评估时是假的。当我把 & 改成 and 后,结果就开始正确了。下面是我写的代码。
x = 21
y = 57
z = 7
a = x
if x > y:
a = y
if y > z:
a = z
elif x > z:
a = z
if x%2 != 0:
a = x
if y%2 != 0 & (y > a):
a = y
if z%2 != 0 & (z > a):
a = z
print(z%2 != 0 & (z > a))
print(z%2 != 0 and (z > a))
print(a)
输出结果是
True
False
7
为什么用 & 和 "and" 得到的输出结果不同呢?它们不是一样的吗?
我看到有说法是 & 是在检查值的实际二进制位,而 and 是在评估整个表达式。此外,& 还被认为是一种“懒惰”的检查方式。
1 个回答
-1
&& 是逻辑与运算符。
它可以把两个布尔表达式结合起来,如果两个表达式都为真,它就返回真;如果有一个不为真,它就返回假。这个运算符主要用于逻辑运算。
& 是按位与运算符。
它对每个操作数的每一位进行按位与运算。通常用来处理整数值中的单独位。