逻辑"与"和位与&的区别

0 投票
1 回答
41 浏览
提问于 2025-04-14 18:33

我在写一个练习题的代码,目的是找出最大的奇数。但是我遇到了一个问题,就是当我用 & 符号把两个语句连接起来时,结果总是显示为真,即使第二个语句单独评估时是假的。当我把 & 改成 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

&& 是逻辑与运算符。

它可以把两个布尔表达式结合起来,如果两个表达式都为真,它就返回真;如果有一个不为真,它就返回假。这个运算符主要用于逻辑运算。

& 是按位与运算符。

它对每个操作数的每一位进行按位与运算。通常用来处理整数值中的单独位。

撰写回答