为什么这被评估为真
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
。
谁能解释一下为什么这条线被评估为真?
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
。