7.8 我遇到一些 ``搞笑" 的代碼, 包含 5["abcdef"]  這樣的 ``表達式"。 這為什麼是合法的 C 表達式呢 ?

是的, 弗吉尼亞7.1, 數組和下標在 C 語言中可以互換。這個奇怪的事實來自數組 下標的指針定義, 即對於任何兩個表達式 a 和 e, 只要其中一個是 指針表達式而另一個為整數, 則 a[e] 和 *((a)+(e)) 完全一樣。這種交換性 在許多 C 語言的書中被看作值得驕傲的東西, 但是它除了在混亂 C 語言競賽 之外, 其實鮮有用武之地。

參考資料: [Rationale, Sec. 3.3.2.1]; [H&S, Sec. 5.4.1 p. 124, Sec. 7.4.1 pp. 186-7]。



腳注

... 弗吉尼亞7.1
這裡有個美國典故, 在 1897 年, 有個叫 弗吉尼亞 (Virginia) 的八歲小女孩, 她對聖誕老人是否存在感到困惑, 因而寫了封尋問信給《紐約太陽報》, 於是就有了 ``Yes, Virginia, there is a Santa Claus" 這篇評論, 有興趣的朋友可以在  http://www.hymnsandcarolsofchristmas.com/santa/virginia's_question.htm 找到相關資料。
翻譯朱群英、孫雲, LaTeX2HTML 編譯 朱群英 (2005-06-23)