请看一下下面的代码:
int i=5;
boolean b = i<5 && ++i<5;//line 2
System.out.println(i);//line 3, prints 5
在第2行,根据我的理解:因为在所有运算符中,++具有最高优先级++i
应首先评估。但line 3
实际上正在打印i=5
(并不是6
)。意思是, && 在 ++ 运算符之前求值。这怎么可能?
编辑:从答案中我看到“在Java中,所有表达式都是从左到右计算的。”。但优先顺序何时真正发挥作用。在下面的代码中:
int a=1,b=1,c=1;
boolean b = a==b&&b==c;//Line2
在第2行中,代码不仅仅从左到右运行。首先评估 a==b,然后评估 b==c,然后评估 && 运算符。您能解释一下吗?
这不是表达式的处理方式。
在爪哇,all表达式从左到右计算。运算符优先级仅在考虑评估时才起作用论点 of &&
.
So i < 5
之前计算过++i < 5
甚至被考虑。
在这种情况下++i < 5
will not进行评估,因为i < 5
is false
. So i
停留在5
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)