为什么假和&&假||真的评估为真?

时间:2018-01-22 18:59:02

标签: boolean-expression short-circuiting

我理解在短路评估中,如果初始值为false后跟&&,则表达式短路,表达式评估为false

声明false && false || true当然应该评估为false,但总是评估为true。我原以为false &&就足以知道表达式是false

我理解为什么逻辑评估为true。我不明白的是这仍然是如何满足短路评估。

4 个答案:

答案 0 :(得分:2)

请参阅"编程语言"关于操作顺序的这篇文章:https://en.wikipedia.org/wiki/Order_of_operation

基本上,在评估&&之前,||运算符首先执行。在您的情况下,您放在x && y中的布尔值并不重要,因为|| true将始终使其成为现实。

答案 1 :(得分:1)

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

答案 2 :(得分:1)

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

然后,我们有一个false || true表达式,其值为true

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

答案 3 :(得分:-2)

false&&假|| true =(false&& false)||是的,因此,它是(任何或者是真的),这当然是真的。