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