通過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個輸出。 –