2017-04-05 47 views
-21

爲什麼Java的輸出50而同一代碼的概念C++輸出51的Java VS C++中的前置和後置增量

int i=5; 

i= (++i + ++i + ++i + ++i + ++i + i++); 

print i 

爪哇:50

C++:因爲lauguages被不同地指定51

+7

這不是有效的C++,這就是原因。 –

+0

這句話的真正目的是什麼?(++ i + ++ i ++ ++ i ++ ++ i ++ ++ i ++ ++);'? –

+0

類似/欺騙[這裏](http://stackoverflow.com/questions/949433/why-are-these-constructs-using-undefined-behavior) – WhiZTiM

回答

7

結果是不同的。

爲什麼java的說50

因爲計算的順序是用Java定義左右。加法是:6 + 7 + 8 + 9 + 10 + 10 == 50.最後的增量增量被賦值覆蓋並且沒有效果。

而C++表示51

所示出的程序有未定義的行爲在C++中,因此它可以有任何輸出。在這種情況下恰好是51。在這個答案詳細信息:https://stackoverflow.com/a/4176333/2079303