【问题标题】:Why is the expression (0==0 & 1==1) evaluating to False?为什么表达式 (0==0 & 1==1) 的计算结果为 False?
【发布时间】:2017-10-17 05:05:04
【问题描述】:

同样 (-1==-1 & 1==1) 也是 False。

抱歉,如果这是显而易见的事情,但我找不到解释。

【问题讨论】:

  • 使用and 进行逻辑和操作。 & 用于位操作。

标签: python operators operator-precedence


【解决方案1】:

&按位与 运算符。在documentation中提到,位运算符的优先级高于逻辑运算符,所以

0 == 0 & 1 == 1

变成

0 == (0 & 1) == 1

你可以想象它从那里走下坡路:

   0 == (0 & 1) == 1
=> 0 == 0 == 1
=> 0 == 0 and 0 == 1
=> True and False 
=> False

假设你想要的是一个逻辑与,那么 python 的方法就是使用and:

0 == 0 and 1 == 1

如您所愿,它会为您提供True

【讨论】:

  • 谢谢!这就是我一直在寻找的解释。
【解决方案2】:

让我们分开吧。

这里最高优先级的符号是括号。除了我们包裹整个表达式,所以他们什么都不做。

接下来是位运算符&

0 & 1 等于 0

这给我们留下了0 == 0 == 1

由于0 不等于1,我们得到False

作为参考,这里是关于operator precedence的python文档。

【讨论】:

  • 0 & 1 产生 0,而不是 1...0 & ANYINTEGER 产生 0。最终结果类似,但中间步骤错误。
  • 糟糕,一定是想到了|。谢谢:P
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-03-08
  • 1970-01-01
  • 2012-12-16
  • 1970-01-01
  • 2021-05-16
  • 1970-01-01
相关资源
最近更新 更多