问题描述:
public static void main(String[] args){
int i=1;
int b;
i=++i+i++;
//i=b;
System.out.println(""+i);
//System.out.println(""+i);
}
这个方法,输出的结果是4,但i在完成2次自增后变成了3,为什么这里输出的结果是i=++i+i++的计算结果,而不是i完成自增的结果呢?
其实我是理解i=++i+i++是可以写成i=(++i)+(i++)的,我想清楚的是
这样的:++i 是完成自增后把2拿出来运算并把2传递给后面一个i,后面的i是i++
所以是先把2拿出来再自增加 后面的i拿了2出来后自己却增加到3,表达式子结果就是2+2=4了;
或者 我这样写
b=++i+i++;输出的b是4,而i=3;
但写成i=++i+i++的时候就只能输出4,i不是还有个3的值吗?怎么被覆盖了?
问题解答:
++i是先自增,再操作
i++是先操作,再自增。
实际运算顺序是i自增;i=i+i;i自增
其实C++应该叫++C,这是一个笑话。
这种表达式没有任何实际意义。(除了Test以外)
i=++i+i++;
可以理解为++i;i=i+i;i++(此时i++比i+i晚执行,比i=i+i要先,所以i被覆盖为之前i+i的值4)
不错 就是4
i=++i+i++
意思是将++i和i++的和赋值给i
i初始值是2 ++i变为2 i++还是2
所以i的值是4了.
你一看我这个就明白了
i=(++i)+(i++);
i = 1;
++i = 2;
i++是先用i后+1,所以2+2=4,付给i=4