2017-02-13 42 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 
相关问题