public static void main(String[] args) {
int i=0;
i=++i+i++;
System.out.println(i);
}

解决方案 »

  1.   

    由于运算符的优先级,所以表达式为(++i)+(i++)
      
      先++i,结果是先i加1,再产生i的一份拷贝做为下一步运算的值,假设拷贝为i_copy1,那么++i以后i_copy1的值为1,i值为1.
      再i++,结果是产生一份i的拷贝做为下一步运算的值,然后i加1,假设拷贝为i_copy2,那么i++以后i_copy2的值为1,i值为2.  最后"+"运算符的作用是i_copy1 + i_copy2,根据上面推论结果为1+1=2
      

  2.   

    重点是i++,对于i++编译器是先取i的值后直接做中间的+运算的。不是等i++执行完在运算+号的。所以就是1+1;
      

  3.   

    (++i)+(i++)
    ++i是1,计算后i变成1,i++是1,计算后i是2,1+1=2就是结果,此时i是2
      

  4.   

    看个列子就明白了“
            int i=0;
            int a=99+i++;       //这个运算好像是99+1
            System.out.println(a);//但是结果却是99
            System.out.println(i);//i的值现在是1了
    99+i++ 后面的i++没有执行,直接取了i的初始值0来运算的。
      

  5.   

    i = 0;
    i = i++;
    //i = 0
      

  6.   

    ++i是先加1再参加运算
    i++是先参加运算再加1
    所以,当i=0时,++i+i++是1+1 而不是1+2
      

  7.   

    i=++i+i++;
    因为i=0;
    所以++i=1;之后i=1了
    然后i++=1;之后i=2了
    所以i=1+1;
    所以i=2;
      

  8.   

     while ((xx = in.read(yy)) != -1)
    与i=++i+i++有区别吗?
    你让他回去不?