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);
}}答案是8,2。  我自己算为什么是4,2? 

解决方案 »

  1.   

    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))
    {
    System.out.println(x + "  " + y);
    x++;
    }
    }
    System.out.println(x + " " + y);
    }}
    这样写你就明白了
      

  2.   


    运算符左结合,(++y > 2) 在(++x > 2)成立的情形不执行
      

  3.   

    当Z=0,执行if ((++x > 2) || (++y > 2)),x变为1,y变为1,不满足if,跳到下一次z循环
    当z=1,执行if ((++x > 2) || (++y > 2)),x变为2,y变为2,不满足if,跳到下一次z循环
    当z=2,执行if ((++x > 2) || (++y > 2)),x变为3,y还是2(或运算的特点),满足if,执行x++,x变为4,继续下一次Z循环
    当z=3,执行if ((++x > 2) || (++y > 2)),x变为5,y还是2,满足if,执行x++,x变为6,继续下一次Z循环
    当z=4,执行if ((++x > 2) || (++y > 2)),x变为7,y还是2,满足if,执行x++,x变为8,继续下一次Z循环
    当z=5,不满足循环条件,循环退出
      

  4.   

    这样分析:当z=0时:
              先执行++x不满足条件然后执行++y还不满足条件,不执行x++,此时x=1,y=1;
              当z=1时:
              先执行++x不满足条件然后执行++y还不满足条件,不执行x++,此时x=2,y=2;
              当z=2时:
              先执行++x满足条件,不再执行++y,然后执行x++,此时x=4,y=2;
              当z=3时:
              先执行++x满足条件,不再执行++y,然后执行x++,此时x=6,y=2;
              当z=4时:
              先执行++x满足条件,不再执行++y,然后执行x++,此时x=8,y=2;