2013-05-12 64 views
2

我想知道爲什麼這段代碼給出輸出112
最後一位數字2如何創建?Java中的前後綴「++」運算符的語義

public static void main(String[] args) { 
    int i = 0; 
    System.out.print(++i); 
    System.out.print(i++); 
    System.out.print(i); 

爲什麼會發生這種情況?

+1

這沒有什麼關係的迭代。 – Cairnarvon 2013-05-12 09:58:23

+0

'++ i'表示增量並讀取'i','i ++'表示讀取和增加'i','i'表示讀取'i'。 – 2013-05-12 10:02:14

+1

作爲一般規則;從不這樣做,它會導致不可讀的代碼,增加並單獨使用一個值 – 2013-05-12 10:35:55

回答

4

您的片段它譯爲

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

這就是爲什麼最後的結果是一個2

++i它是由印刷方法被調用之前遞增變量和i++這是incrementin g執行方法後的變量。

3

i++是增量後運算符,它的表達式值爲舊值i,但是增加i的副作用。值爲1,但它將i更改爲2

1

i是初始爲0,那麼它是預加和印刷讓你有第一1,然後將其再次印刷和你有第二1,則後加一,然後打印的最後時刻,你必須2

1

您在i應用兩個增量。的初始值是0,因此兩個增量(++ii++)後它將成爲2.

兩個i++++i通過一個遞增的i值。

它們類似於

i = i+1; 

++i一個遞增的i值然後使用它,所以0變得1並打印出來,同時i++首先使用的值,然後遞增的i值,所以打印值爲1然後它變成2,因此最後一個數字(最終值爲i)爲2.

1

簡單地;

在後遞增,變量被讀取後增量完成。

在預增量,變量值首先遞增,然後在表達式中使用。

2

當我們在使用後或預增操作符它增加了價值。

後增量運算符(i++)第一分配值,然後遞增它。預增量運算符(++i)先遞增,然後賦值。 他們都這樣的表現:

int i=0; 
i=i++; 
System.out.println(i); //1 
i=++i; 
System.ou.println(i); //1 
2

運行此代碼時:

public static void main(String[] args) { 
    int i = 0;    //i=0; 
    System.out.print(++i); // increments i to i=1, and prints i 
    System.out.print(i++); // prints i and then increments it to i=2 
    System.out.print(i);  // prints i, i.e. 2 
}