i++:先引用后自增。
++i:先自增后引用。
所以,
i=1;
i=i++;
// 此时i为1
// 执行流程为,i=1,i把值放在等号右边(需要一个临时变量,所以这也是i++比++i慢的原因),i++完成自增为2,最后执行等号,i=temp,(temp是刚才临时变量),所以i为1.
i=1;
i=++i;
// 此时i为2
// 执行流程,i=1,++i在i本身上完成自增(不需要临时变量)为2,把i的引用放在等号右边,最后执行等号,i=引用,所以,i为2.
i++:先引用后自增。
++i:先自增后引用。
所以,
i=1;
i=i++;
// 此时i为1
// 执行流程为,i=1,i把值放在等号右边(需要一个临时变量,所以这也是i++比++i慢的原因),i++完成自增为2,最后执行等号,i=temp,(temp是刚才临时变量),所以i为1.
i=1;
i=++i;
// 此时i为2
// 执行流程,i=1,++i在i本身上完成自增(不需要临时变量)为2,把i的引用放在等号右边,最后执行等号,i=引用,所以,i为2.