2013-06-24 44 views
1

爲什麼這個程序的輸出是10,爲什麼不是11?分配後增量表達式

public class Test { 
    public static void main(String[] args){ 
    int p = 10; 
    p = p++; 
    System.out.println(p); 
    } 
} 
+0

SO上至少會有100個類似的問題。 – devnull

回答

6

雖然分配完成之前後綴++改變p,表達式的值保持的p原始值,這是10。這是什麼被分配到p

這裏是發生了什麼事情:

  • p分配10
  • p的價值增量
  • p遞增之前保存,並且新的值11存儲在p
  • 將保存的10的值存儲回p
0

我認爲它適用,如果你只是使用p ++;