4.1 為什麼這樣的代碼:  a[i] = i++; 不能工作?

子表達式 i++ 有一個副作用 --- 它會改變 i 的值 --- 由於  i 在同一表達式的其它地方被引用, 這會導致無定義的結果, 無從判斷該引用(左邊的 a[i] 中)是舊值還是新值。(注意, 儘管 在 K&R 中建議這類表達式的行為不確定, 但 C 標準卻強烈聲明它是無 定義的, 參見問題 11.32

參考資料: [K&R1, Sec. 2.12]; [K&R2, Sec. 2.12]; [ISO, Sec. 6.3]; [H&S, Sec. 7.12 pp. 227-9]。

翻譯朱群英、孫雲, LaTeX2HTML 編譯 朱群英 (2005-06-23)