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)