繁体   English   中英

无法弄清楚为什么会打印出 63

[英]Can't figure out why this prints out 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);
}

首先,++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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM