大佬教程收集整理的这篇文章主要介绍了双重结构相等运算符:if(a == b == c),大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
您不能使用任何类型来执行此操作,但是Boolean
因为此比较链将从左侧到右侧进行评估。第一个比较将简化为true
或false
必须与链中的第三个值进行比较的值(并且此检查的结果将与第四个值进行比较,依此类推,直到链的末尾)。至于原始值,您只能比较相同类型的原始值(例如Boolean和Boolean将起作用,而double和Boolean将不起作用)-这就是为什么只能使用Booleans的原因-
因为==
返回的是相同的值输入为链中所有值。
这里存在危险:所有比较链的结果都不等于true
您提供的所有值都等于时true
。您可以从第二个输出中看到它:true
== false
==false
提高了true
,如果您从左到右评估它(在程序执行过程中发生),这是正确的结果,但是如果 您认为 必须同时评估这个比较链,这似乎是错误的 。正确的方法是两个执行两个显式比较: __
if (a == b && b == C) {
// do something
}
我今天偶然地写了一些代码,当Eclipse一次不对我大吼时,我感到很惊讶。该代码对结构相等运算符(==
)有双重使用,类似于下面的if(a==b==C)
结构。
public class tripleEqual {
public static void main(String[] args) {
Boolean[] a = { true,false };
Boolean[] b = { true,false };
Boolean[] c = { true,false };
for (int aDex = 0; aDex < 2; aDex++) {
for (int bDex = 0; bDex < 2; bDex++) {
for (int cDex = 0; cDex < 2; cDex++) {
if (a[aDex] == b[bDex] == c[cDex]) {
System.out.printf("Got a==b==c with %d %d %d\n",aDex,bDex,cDeX);
}
}
}
}
}
}
输出是
Got a==b==c with 0 0 0
Got a==b==c with 0 1 1
Got a==b==c with 1 0 1
Got a==b==c with 1 1 0
玩耍时,我注意到我if(a==b==C)
除了不能使用任何类型Boolean
。从这个布尔表达式是
( A'. B'. C') + ( A'. B . C ) + ( A . B'. C ) + ( A . B . C')
简化为(A=B).'C + (A<>B).C
。
因此,忽略副作用if(a==b==C)
等于if(a==b && !C) || (a!=b && C))
。
谁能解释该if(a==b==C)
语法如何暗示这一点?
编辑1:
在许多人解释了左联想性之后,我发现我的困惑在哪里。通常,我将“ 1”表示为true,将“
0”表示为false,但是在上述测试中,我最小化的真值表/输出中,我将“ 0”表示为true,将“ 1”表示为false。表达式的取反( A'. B'.
C') + ( A'. B . C ) + ( A . B'. C ) + ( A . B . C')
是(A=B)=C
!
以上是大佬教程为你收集整理的双重结构相等运算符:if(a == b == c)全部内容,希望文章能够帮你解决双重结构相等运算符:if(a == b == c)所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。