引用 C11 标准:
数组订阅(§ 6.5.2.1)
下标运算符的定义
[]
与E1[E2]
相同(*((E1)+(E2)))
。
我想知道为什么括号是E1
必要的(C89标准中缺少它们),即哪个表达式可以(*(E1+(E2)))
不同于(*((E1)+(E2)))
?
根据http://www.open-std.org/jtc1/sc22/wg14/www/docs/n841.htm,插入它只是为了清楚起见。这两个表达式在句法上是等价的。
公共评论号 PC-UK0103
评论 1.
类别:编辑更改/非规范性贡献
委员会草案小节:6.3.2.1
标题:数组下标示例
详细说明:第 2 款应将“ ”替换
(*(E1+(E2)))
为“(*((E1)+(E2)))
”,以避免混淆。是的,我知道句法图表使它非常明确,但是第 2 段中的当前措辞非常混乱。