2014-10-16 80 views
-1

我有這樣的表達式:當我在一個任務中做這種增量時,會發生什麼?

B[i]=B[++i]*i; 

在C這是未定義的?

首先發生什麼?首先評估賦值符號的權利,還是左?

+0

這是未定義的。如果你不知道它的含義,爲什麼你會想要寫這樣的代碼? – 2014-10-16 20:44:46

+1

@BillLynch是一個測試的問題......他們詢問程序的輸出是什麼,代碼有這個表達式。對我而言,未定義會發生什麼,並且我可以我是對的,謝謝... – exsnake 2014-10-16 20:45:48

+1

因此,測試要麼預計UB是答案,要麼是垃圾。我爲後者給出了十對一的賠率。 – Deduplicator 2014-10-16 20:46:30

回答

0

它是未定義的,可以按任何順序進行評估。

+0

「任何訂單」保證超過實際保證,這是沒有什麼。 – Deduplicator 2014-10-16 20:45:46

+0

@Deduplicator「任何訂單」保證什麼?對我來說,它看起來一無是處。 – kraskevich 2014-10-16 20:47:07

+2

任何命令都會保證它會以某種順序進行評估,但UB意味着它只是非感性的,任何事情都可能發生。 – Deduplicator 2014-10-16 20:48:54

相關問題