提起后缀式的 i++,我最常听的一句总结就是
后缀模式:先返回,后自增。
但是对于这句话,反映出的意思却并不明朗。
这几天翻阅博客看到一个比较清楚的回答,可以解答心中的疑惑
i=i++的问题分析
博客中的一段话总结的相当精彩
int i=1;
System.out.println("i的值为:"+i);
i = i++;是先将i的值(1)存入堆栈,然后对变量区中的i自加1,这时i的值的确是2,但是随后又将堆栈的值(1)弹出赋给变量区的i,所以最后i =1。
通过上面的说明可以得出,实际上可以认为是先自增(i自增然后赋值给i),然后再返回(将堆栈的值弹出赋给变量区,这里属于第二次给i赋值,将原来i的值(2)给覆盖掉了)。
由上述的总结可以得出这样一个代码思路(仅帮助理解)
int temp = i;//保存返回值
i = i+1;//自增,i被赋值
i = temp;//最后将返回值赋值给i,覆盖原来的值
相应的 i= ++i可以是这样的思路(仅帮助理解)
i = i+1;//自增,i被赋值
int temp =i;//保存返回值
i = temp;//最后将返回值赋值给i,覆盖原来的值
第一次写东西,希望大家多担待,欢迎各路大神来指错