-4
i = 7;
j = i++ * ++i; // outputs 64?
根據優先級後遞增
至上所以
應該是7 * 9。指出我的錯誤。你能否給我提供一個資源,在這裏我可以詳細瞭解並瞭解這些工作是如何工作的,這就是評估和所有工作的順序。
i = 7;
j = i++ * ++i; // outputs 64?
根據優先級後遞增
至上所以
應該是7 * 9。指出我的錯誤。你能否給我提供一個資源,在這裏我可以詳細瞭解並瞭解這些工作是如何工作的,這就是評估和所有工作的順序。
你的問題是在上面沒有順序點。見 Undefined behavior and sequence points
所以,你必須在其中的i
兩個增量出現(你剛纔是否在返回的遞增數或增量之前數)的順序沒有控制權。這是未定義的行爲。
例如,它可以執行++i
第一,返回8,那麼i++
,也返回8,給你64.因爲它是不確定的行爲,在技術上可以得到任何結果。
我敢說這個問題已經被問過幾百次了,對於C和C++來說。 –
如果你曾經包含這段代碼(或任何類似它的代碼),你應該在你生命的一寸之內鞭打。爲什麼你會寫這樣的東西呢?而且,沒有關於「我正在學習c並想了解帖子和前綴運算符」的廢話。 – KevinDTimm
@KevinDTimm它在我的一個考試中被問到。 – Ignited