2017-02-13 44 views
-3

遇到此代碼並試圖解決它...但不明白爲什麼它打印出63?不知道爲什麼這打印出來63

public static void main(String[]args) 
{ 
    int x = 0; 
    int y = 0; 
    for(int z= 0; z < 5; z++) 
    { 
     if ((++x > 2)&&(++y > 2)) 
     { 
      x++; 
     } 
    } 
    System.out.println(x+""+y); 
} 
+5

步驟通過它與調試器。那就是它們的用途。 –

+1

谷歌後綴和前綴增量運算符... – Yousaf

+2

此外,「短路評估」在這裏發揮作用。 –

回答

1

首先,++ x表示x被添加1,然後讀取if語句中的檢查。所以當你第一次檢查時x是1。

但還有一件事在Java中,如果你檢查兩個語句,就像你在下面做:

if ((++x > 2)&&(++y > 2)) 

如果第一次檢查失敗,第二個沒有按未得到執行。

我寫在控制檯中的輸出,具有-----爲所有循環週期:

 
x: 0 
y: 0 
z: 0 
if: (false && (not executed)) 
x: 1 
----- 
x: 1 
y: 0 
z: 1 
if: (false && (not executed)) 
x: 2 
----- 
x: 2 
y: 0 
z: 2 
if: (true && false) 
x: 3 
y: 1 
----- 
x: 3 
y: 1 
z: 3 
if: (true && false) 
x: 4 
y: 2 
----- 
x: 4 
y: 2 
z: 4 
if: (true && true) 
x: 5 
y: 3 
x: 6 
----- 
63 
相關問題