为什么是假&&假|| true 评估为 true?

Why is false && false || true evaluated to true?

我了解到,在短路估值中,如果初始值是 false 后跟 &&,则表达式短路并且表达式被评估为 false

语句false && false || true当然应该计算为false,但它总是计算为true。我原以为 false && 足以知道表达式是 false.

我理解为什么逻辑计算结果为 true。我不明白的是这怎么仍然满足短路评估。

因为 || 的优先级低于 &&。它的计算结果为 (false && false) || true;参见 http://en.cppreference.com/w/cpp/language/operator_precedence

有关操作顺序的文章,请参阅 "Programming Languages" 下的部分:https://en.wikipedia.org/wiki/Order_of_operation

本质上,&& 运算符先执行,然后再计算 ||。在您的情况下,您在 x && y 中放入什么布尔值并不重要,因为 || true 将始终使其为真。

假&&假||真=(假&&假)||真实,因此,它是(任何或真实的),这肯定是真实的。

短路评估不会改变运算符的优先级。正如其他答案所指出的,表达式本质上是 (false && false) || true。由于首先评估 && 运算符,它将跳过评估第二个 false 值(可能是 (false && _) || true)。

然后,我们有一个 false || true 表达式,其计算结果为 true

如果表达式是false && (_),你的想法就是正确的。