6

引用 C11 标准:

数组订阅(§ 6.5.2.1)

下标运算符的定义[]E1[E2]相同(*((E1)+(E2)))

我想知道为什么括号是E1必要的(C89标准中缺少它们),哪个表达式可以(*(E1+(E2)))不同于(*((E1)+(E2)))

4

1 回答 1

10

根据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 段中的当前措辞非常混乱。

于 2012-08-30T17:46:53.860 回答