2010-09-28 63 views

回答

4

結果未定義。您在表達式中多次修改變量(或更準確地說sequence point)。

在序列點之間不止一次修改變量是未定義的,所以不要這樣做。

這可能是你的編譯器,對於這種特殊情況下決定evalate ++i + ++i作爲

  • 增量的最後一個++i,得到4,離開我是4
  • 增量第一++i,產生5,使i爲5(如在現有步驟左i設定爲4,則遞增到5)
  • 總和的二值化,4 + 5

另一個編譯器,或者如果您更改優化級別,或者稍微更改代碼,可能會產生不同的輸出。

+0

同意:我檢查了我的gcc 4.1.2並收到了10的值(可能與你的9一樣容易解釋) – KevinDTimm 2010-09-28 13:28:09

+0

謝謝。 – 2010-09-28 13:38:00

+0

@KevinDTimm你能解釋一下你如何解釋'10'? – ajay 2014-03-25 19:49:29

相關問題