2012-07-19 77 views
2

可能重複:
What is the difference between a += b and a =+ b , also a++ and ++a?
What is x after 「x = x++」?的Java I ++操作說明

在測試1我加1的值,並返回舊值並保持其增加值在我的變量。但在Test2中,我將它的值遞增1並返回其舊值,並且增量也發生了。他們是否爲我在i變量中沒有賦值的增量複製了i。 Test2的操作步驟是什麼?

Test1的

int i = 0; 
System.out.print(i++); 
System.out.print(i); 

輸出01

的Test2

int i = 0; 
i = i++; 
System.out.println(i); 

輸出0

+0

@這些案件Eng.Fouad無前實際匹配這個 – 2012-07-19 23:10:15

+1

來教育自己,嘗試做「INT I = 0;我++ ; System.out.println(i);「 – DGH 2012-07-19 23:11:04

+1

[This](http://stackoverflow.com/questions/7911776/what-is-x-after-x-x)應該對你感興趣 – Pshemo 2012-07-19 23:11:44

回答

15

聲明i = i++有在Java中定義良好的行爲。首先,將i的值推入堆棧。然後,變量i遞增。最後,彈出堆棧頂部的值並將其分配到i。最終的結果是沒有任何事情發生 - 智能優化器可以刪除整個語句。

+1

簡單而完美! +1 – alfasin 2012-07-19 23:09:08

+0

你會好心解釋我在i ++操作中發生了什麼。 – Sudeepta 2012-07-19 23:21:52

+1

'i ++'是我三步過程的前兩步:'i'的值被保留,然後'i'遞增。 – 2012-07-19 23:28:21

3

i = i++;是棘手的結構,它確實是類似如下:

int iOld = i; 
i = i + 1; 
i = iOld; 

希望只i++;使用作爲一個獨立的聲明。

+0

這很奇怪,因爲你會期望'i = i ++;'與i = i = i + 1相同''。單獨使用i ++意味着:'i = i + 1';然而,exlain不過,爲什麼一個循環'i = 0;'仍然是0,並且像這樣構造時循環爲etertnity。 – Lealo 2017-12-01 16:04:35

1

++運算符出現在變量之後時(如i++中的示例),i的增量發生在操作結束後。這就是爲什麼在第一個例子中的第一個打印爲零,你還沒有添加,然後第二個是1.

第二個例子是一樣的,保存我,然後提高它,並將原件放回。

i++ 

是運營商本身。

你可以實驗++i第一個,這將增加我做打印動作