2015-10-16 69 views
2

比方說,我有以下代碼:什麼時候變量的後綴操作符實際增加?

int x = 5; 
System.out.println(x++);    // Will print 5 
System.out.println("Random code"); // Will write "Random code" 
System.out.print(x):     // Will write 6 

我的問題是:在什麼行X實際遞增?緊隨後綴?或者在變量被下一次調用的時候?

我聽說過與後綴和前綴運算符有關的序列點。這主要是我問的原因。

+0

那麼後綴表單首先會返回表達式的當前值,然後對該值執行遞增操作。所以它會在第5行本身增加。 – Siddhartha

回答

1

x的值將在打印後立即增加(在這種情況下)。會發生什麼是比較/打印/其他操作在變量上執行,然後直接在這樣的操作後,它會增加。同樣的事情會發生,如果你有像 int z = 0; if (1 > z++) { system.out.println (z) } ,它會打印1.

編輯:在java中沒有序列點。請閱讀此處以獲取更多信息: sequence point concept in java

1

後綴表單首先返回表達式的當前值,然後對該值執行增量操作。所以它會在第5行本身增加。

這方面的一個例子是循環中的經典之作:

for (int i = 0; i<10; i++) 
{ 
    //something 
} 

我們經常hear that i++ could be replaced by ++i,因爲for循環評估本身存在的第三個條件語句。

因此,如果i = 5,它會在該語句本身增加到6,然後進入for循環的正文。如果postfix的行爲使得i只在下次訪問時才增加,那麼i將保持5次循環,這與循環的迭代次數完全不同,後者與做出++1完全不同。

1

當你編寫代碼

x++ 

這對你和增量由x 1

返回x的值,所以它增加線路上無5本身。

相關問題