java中的i++與++i

i++是在操作完成之後執行一次i=i+1,而++i則是在操作完成之前執行一次i=i+1。具體什麼是操作完成,個人認爲在java中應該是一步基本運算。因爲java對於自增減運算符存在一箇中間緩存變量機制。
對於i++來說,先將i存入一箇中間變量temp,再將i自增1。即 
temp=i;
i=i+1;
這個temp被用來參與實際的運算。
例如
int a=0,i=1; 
a=(i++)+(i++);
求a與i的值?
一步一步來,第一個(i++)先緩存當前i的值到temp1:
temp1=i;
i自增:
i=i+1;
temp參與運算此時上式可以視爲:
a=temp1+(i++);//此時temp1爲1,i爲2即a=1+(i++)
下面第二步,對第二個(i++):
temp2=i;//temp2=2
i=i+1;//i=3
temp2參與運算:
a=temp1+temp2=1+2=3;
最後a=3,i=3;
對於++i來說同理,只不過是先自增,再創建緩存變量:
i=i+1;
temp=i;
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章