问题描述
为什么(not false and true or not false and not true)结果为 True?
如果我们按顺序求值,从左到右,我们将在最后有一个 and 语句,但不是 true。这不应该是假的吗?
解决方法
因为运算符优先。
查看您所用语言的运算符文档,了解其特定规则。但至少在我使用过的每种语言中,and
操作的优先级高于 or
操作。
所以:
not false and true or not false and not true
和这个一样:
(not false and true) or (not false and not true)
not
操作有更高的优先级,所以现在是这样的:
((not false) and true) or ((not false) and (not true))
简化为:
(true and true) or (true and false)
简化为:
true or false
简化为:
true