为什么将此评估为true

时间:2019-12-09 22:17:48

标签: php boolean conditional-operator

有人可以解释一下为什么这行被评估为真吗?

false && (true) ? false : true

我的意思是,根据我对布尔算术的了解,false && something被评估为false。

此外,如预期的那样,它将被评估为false:

true && (true) ? false : true

2 个答案:

答案 0 :(得分:4)

?:的优先级比&&(请参阅manual)低,因此您的表达式被评估为

(false && (true)) ? false : true

=>

 false ? false : true

=>

 true

这同样适用于您的第二个表达式,其计算结果为

(true && (true)) ? false : true

=>

 true ? false : true

=>

 false

答案 1 :(得分:1)

尼克的答案已经解释了它。但是,当我们将三元运算符(:?)视为if-else操作的缩写形式时,它更容易理解。因此,

false && (true) ? false : true

声明与:

相同
if (false && (true)) {
    return false;
} else {
    return true; // the if condition is false, so this will get executed.
}

由于if内部的条件是false,因此执行了else块,因此返回了true