int i=1;                                    //i=1
    int j=i++;                              //i=2,j=1
    if((i>++j)&&(i++==j)){                  //if((1>2)&&(1==2)){
        i+=j;                      
        }    if()中执行i>++j完i=1,j=2,执行i++==j相对于1==2;比较完之后i才加1,i=3

解决方案 »

  1.   

    我的运行结果:
    2
    2真是奇怪,谁说没有执行++j?
    分析如下:
    public class Foo{
       public static void main(String[] args){
        int i=1;                   //i=1
        int j=i++;                 //j=1,i=2
        if((i>++j)&&(i++==j)){     //先执行++j,j=2,此时比较:if (2>2) && ...,这里是短路与,当(2>2)为假时不会再计算(i++==j)与(i++==j),所以跳过i+=j语句.
            i+=j;
        }
        System.out.println(i);     //i=2
        System.out.println(j);     //j=2
      }
    }这里或许短路与(&&)与短路或(||)是关键吧。