繁体   English   中英

为什么false &&(false)?false:true返回true

[英]Why does false && (false)?false:true return true

请不要看这里的状况,以便减轻对行为的理解

为什么结果等于真?

boolean result = false && (false)?false:true;

我知道我们可以解决这个问题:

boolean result = false && (false?false:true);

但我只是想知道为什么第一个语法不正确,看起来像'?' 运营商优先于'&&'

三元条件?: && 优先级低于&& 所以

boolean result = false && (false)?false:true;

(有不必要的括号); 相当于

boolean result = (false && false) ? false : true;

因为(因为false && falsefalse ),这减少到

boolean result = false ? false : true;

这当然是true

false && (false)计算结果为false ,因此返回三元运算符的最后一个值,这是true

1)&&(逻辑AND)

说明: - 比较两个表达式,仅当两个表达式都为true时返回true。 如果一个或两个评估为false,则返回false。

以下列表显示了所有可能的组合:

true && false // Evaluates false because the second is false
false && true // Evaluates false because the first is false
true && true // Evaluates true because both are true
false && false // Evaluates false because both are false

句法

expression1 && expression2

点击此处了解有关Logical AND的更多信息

2)|| (逻辑OR)

说明: - 比较两个表达式,如果其中一个或两个表达式为true,则返回true。 仅当两个表达式都为false时才返回false。

以下列表显示了所有可能的组合:

true || false // Evaluates true because the first is true
false || true // Evaluates true because the second is true
true || true // Evaluates true because both are true
false || false // Evaluates false because both are false

句法

expression1 || 表达式2

单击此处了解Logical OR

因为

boolean result = false && (false)?false:true;

被解释为

boolean result = (false && (false))?false:true;

请参阅: Java运算符优先级 在表中你可以看到&&优先级高于? : ? :

它只是一些布尔代数

False && false = true
false && true = false
true && true = true
true && false = false

所以在第一种情况下,它就像写作:

if (false && false){
result = false
} else {
result = true
}

在你的第二种情况下,它就像写作:

result = false && (false == false);

和false == false返回true。 所以false && true返回false

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM