为什么这被评估为真

Why is this evaluated to true

谁能解释一下为什么这条线被评估为真?

false && (true) ? false : true

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

此外,正如预测的那样,这将被评估为 false:

true && (true) ? false : true

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

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

=>

 false ? false : true

=>

 true

这同样适用于你的第二个表达式,它被评估为

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

=>

 true ? false : true

=>

 false

尼克的回答已经解释过了。但是,我认为当我们将三元运算符 (:?) 视为 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