为什么int i=0;i=++i+i++; 最终i的值是2 ?而不是3? public static void main(String[] args) { int i=0; i=++i+i++; System.out.println(i); } 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 由于运算符的优先级,所以表达式为(++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++执行完在运算+号的。所以就是1+1; (++i)+(i++)++i是1,计算后i变成1,i++是1,计算后i是2,1+1=2就是结果,此时i是2 看个列子就明白了“ 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来运算的。 i = 0;i = i++;//i = 0 ++i是先加1再参加运算i++是先参加运算再加1所以,当i=0时,++i+i++是1+1 而不是1+2 i=++i+i++;因为i=0;所以++i=1;之后i=1了然后i++=1;之后i=2了所以i=1+1;所以i=2; while ((xx = in.read(yy)) != -1)与i=++i+i++有区别吗?你让他回去不? 求最大流最大边长最小值的EK算法 jar文件操作数据 100分求这是什么异常?javax.xml.ws.WebServiceException: No Content-type in the header! 学习struts2中的困惑 请高手指点 scjp习学习笔记-希望给出学java的人有所帮助 w2k上的java程序如何使用jdbc连接到unix oracle上? 为什么Applet不能正常显示? 请教数据库的数据类型! appletviewer applet.html 请详细注释代码 求个拆分IP地址的算法
先++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是1,计算后i变成1,i++是1,计算后i是2,1+1=2就是结果,此时i是2
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来运算的。
i = i++;
//i = 0
i++是先参加运算再加1
所以,当i=0时,++i+i++是1+1 而不是1+2
因为i=0;
所以++i=1;之后i=1了
然后i++=1;之后i=2了
所以i=1+1;
所以i=2;
与i=++i+i++有区别吗?
你让他回去不?