&&
的优先级应该有更高的优先级比||
:的Java布尔
int a = 10;
System.out.println(a==10 || --a==9 && a==8);
System.out.println(a);
此打印正确的,10它似乎只检查了第一部分,如果其真正的第二个根本不会执行。
如果我做a==9
那么第二部分似乎评估和打印9.有人可以解释为什么会发生这种情况吗?是不是&&
应该首先评估?
编辑:我明白了。 a==10 || --a==9 && a==8
转换成(a==10) || (a==9 && a==8)
因此,如果第一个评估为真,它会短路。谢谢你的帮助。
没有更高的优先级,它只是从左转到右.. – gtgaxiola 2014-08-28 13:09:13
@gtgaxiola小心,当你说没有优先级。如果没有优先权。如果没有优先级,表达式将评估为true。 – Cruncher 2014-08-28 13:11:53
@Cruncher很好抓.. – gtgaxiola 2014-08-28 13:12:54