Java Can';我不明白为什么会打印出来
遇到此代码并试图解决它。。。但我不太明白为什么会打印出63Java Can';我不明白为什么会打印出来,java,if-statement,for-loop,Java,If Statement,For Loop,遇到此代码并试图解决它。。。但我不太明白为什么会打印出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.pri
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);
}
publicstaticvoidmain(字符串[]args)
{
int x=0;
int y=0;
对于(intz=0;z<5;z++)
{
如果((++x>2)和(++y>2))
{
x++;
}
}
System.out.println(x+“”+y);
}
首先,++x表示x被添加为1,然后读取if语句中的检查。第一次检查时,x是1
但是Java中还有另一件事,如果您检查两条语句,就像您在下面所做的那样:
if ((++x > 2)&&(++y > 2))
如果第一次检查失败,则第二次检查不会执行
我在控制台中编写了输出,对于所有for循环,都有------
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
x:0
y:0
z:0
如果:(假&&(未执行))
x:1
-----
x:1
y:0
z:1
如果:(假&&(未执行))
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
使用调试器逐步完成它。这就是他们的目的。谷歌后缀和前缀增量操作符…还有,“短路评估”在这里发挥作用。它应该打印42!