首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

为什么int i=0;i=++i+i++; 最终i的值是2 ?而不是3?解决方案

2012-04-25 
为什么int i0i++i+i++ 最终i的值是2 ?而不是3?Java codepublic static void main(String[] args) {int

为什么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;

热点排行