public class Test
{
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);
}
}
将这个程序的循环流程每一步详细的给出(注意:不是要求一个简单的结果)
{
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);
}
}
将这个程序的循环流程每一步详细的给出(注意:不是要求一个简单的结果)
{
public static void main(String args[])
{
int x = 0;
int y = 0;
for(int z=0; z<5; z++)
{
System.out.println("x外="+ x + " " + "y外=" + y);
if(++x>2 || ++y>2)
{
System.out.println("x内上="+ x + " " + "y内上=" + y);
x++;
System.out.println("x内下="+ x + " " + "y内下=" + y);
}
}
System.out.println(x + " " + y);
}
}x外=0 y外=0
x外=1 y外=1
x外=2 y外=2
x内上=3 y内上=2
x内下=4 y内下=2
x外=4 y外=2
x内上=5 y内上=2
x内下=6 y内下=2
x外=6 y外=2
x内上=7 y内上=2
x内下=8 y内下=2
8 2
谁能告诉我y值为什么变化到2就不在变化了
因为 当y=2的时候,x=3了.
所以每次进if 的时候x就已经满足需的条件..
是先加1再作其它动作
x=0
++x>2
其实是1 > 2吗?x++
是先作其它动作再自加1
我想你要弄懂这个就OK
我最出理解错了class A
{
public static void main(String [] args)
{
int x, y, z;
x = 0; y = 0;
for(z = 0; z < 5; z++)
{
System.out.println("x-out = " + x + " ; y-out = " + y);
if(++x > 2 | ++y > 2) // | 不会中途“短路”
{
System.out.println("x-inup = " + x + " ; y-inup = " + y);
x++;
System.out.println("x-indown = " + x + " ; y-indown = " + y);
}
} System.out.println("finally : x = " + x + " y = " + y);
}
}result:x-out = 0 ; y-out = 0
x-out = 1 ; y-out = 1
x-out = 2 ; y-out = 2
x-inup = 3 ; y-inup = 3
x-indown = 4 ; y-indown = 3
x-out = 4 ; y-out = 3
x-inup = 5 ; y-inup = 4
x-indown = 6 ; y-indown = 4
x-out = 6 ; y-out = 4
x-inup = 7 ; y-inup = 5
x-indown = 8 ; y-indown = 5
finally : x = 8 y = 5
|| 运算符有可能中途“短路”
而 | 不会