通过Java运算符优先级表:逻辑运算符优先级
'|'逻辑或运算符的优先级高于'& &'的逻辑AND运算符。
我使用以下代码检查上述事实
int y = 5;
int x = 2;
if( x++ > 2 && ++y > 2 | true )
; //do nothing
System.out.println("x = " + x + " y = " + y);
但上面的行给出输出作为 -
x = 3 y = 5
表示X ++首先评估。
即使我把括号放在周围的条件下|
if( x++ > 2 && (++y > 2 | true))
;
但我仍然得到相同的输出。
为什么运算符优先级在这种情况下不起作用?
Actully我使用| oprator有意,如果|运算符具有比&&高的优先级,那么为什么&&比|更早执行。 –
我不这么认为。您将在逻辑AND的任一侧应用所有按位运算,然后应用逻辑AND。你也会得到一点红鲱鱼 - 你实际上不会在逻辑块中做任何事情,所以你怎么能绝对肯定你没有得到你想要的结果呢? – Makoto
因为如果| evalute before &&,那么y应该有6个输出。 –