有人可以解释一下为什么这行被评估为真吗?
false && (true) ? false : true
我的意思是,根据我对布尔算术的了解,false && something
被评估为false。
此外,如预期的那样,它将被评估为false:
true && (true) ? false : true
答案 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
。