在计算表达式(x==y && a<b)
时,首先计算布尔表达式x==y
,然后计算a<b
。对还是错?
请解释一下工作原理。我对这个if表达式感到很困惑。
发布于 2015-04-29 13:40:51
&&运算符从左到右求值
如果首先计算x==y,然后计算a
如果您想要计算另一个表达式,即使第一个表达式倾向于false,我们可以使用& like
(x==y & a<b)
检查以下示例:
int x=10,y=9,count=0;
if(x==y && ++count == 0){
System.out.println("true");
}
System.out.println(count);
在本例中,输出将为0
int x=10,y=9,count=0;
if(x==y & ++count == 0){
System.out.println("true");
}
System.out.println(count);
在本例中,输出将为1。仔细检查运算符,我们使用了&
发布于 2015-04-29 13:44:22
对于&&
(条件And) :-
x==y
将首先计算,如果这是真的,那么它将计算a<b
。作为条件-并从左到右求值。
如果你只使用&
运算符:- (And运算符)
在这种情况下,这两个条件都将被评估。无论第一个条件(左侧条件)是失败还是通过。
发布于 2015-04-29 13:42:34
计算x==y
,只有当它为真时,才会计算a<b
https://stackoverflow.com/questions/29935184
复制相似问题