执行结果
i = ++1; //其效果就是i进行自增;
i = i++; //其效果是i = i;
为什么?i = i++中的i自增跑哪去了?
假设 i = 3;
先说i=++i的运算过程,如下:
i = i + 1; //先进行自增运算 i = 4
a = i; //这里假设++i的返回值为a a = 4
i = a; //执行 = 运算符,将++i的返回值给i,i = 4
i = i++的运算过程,如下:
a = i; //同样假设a为i++的返回值,a = 3
i = i + 1; //i进行自增运算,i = 4
i = a; //执行 = 运算符,将i++的返回值a给i,相当于又重新为i进行赋值操作,i = 3
//所以,尽管i进行自增运算了,但是在程序执行到 = 运算符时,结果又被冲刷掉了,而并不是 i = i + 1这个操作没有执行。
这里重点理解的是,任何表达式都有一个返回值,++i 和 i++的不同点便是,++i 先对i 进行运算,然后将运算后的结果作为返回值,而i++相反,先将i作为返回值,返回给其他运算符进行运算,然后对i进行计算操作。