-21
爲什麼Java的輸出50
而同一代碼的概念C++輸出51
?的Java VS C++中的前置和後置增量
int i=5;
i= (++i + ++i + ++i + ++i + ++i + i++);
print i
爪哇:50
C++:因爲lauguages被不同地指定51
爲什麼Java的輸出50
而同一代碼的概念C++輸出51
?的Java VS C++中的前置和後置增量
int i=5;
i= (++i + ++i + ++i + ++i + ++i + i++);
print i
爪哇:50
C++:因爲lauguages被不同地指定51
結果是不同的。
爲什麼java的說50
因爲計算的順序是用Java定義左右。加法是:6 + 7 + 8 + 9 + 10 + 10 == 50.最後的增量增量被賦值覆蓋並且沒有效果。
而C++表示51
所示出的程序有未定義的行爲在C++中,因此它可以有任何輸出。在這種情況下恰好是51。在這個答案詳細信息:https://stackoverflow.com/a/4176333/2079303
這不是有效的C++,這就是原因。 –
這句話的真正目的是什麼?(++ i + ++ i ++ ++ i ++ ++ i ++ ++ i ++ ++);'? –
類似/欺騙[這裏](http://stackoverflow.com/questions/949433/why-are-these-constructs-using-undefined-behavior) – WhiZTiM