日期:2014-05-20  浏览次数:20627 次

为什么int i=0;i=++i+i++; 最终i的值是2 ?而不是3?
Java code
    public static void main(String[] args) {
        int i=0;
        i=++i+i++;
        System.out.println(i);
    }


------解决方案--------------------
由于运算符的优先级,所以表达式为(++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
------解决方案--------------------
i=++i+i++;
因为i=0;
所以++i=1;之后i=1了
然后i++=1;之后i=2了
所以i=1+1;
所以i=2;