关于数组下标运算符

md5*_*md5 6 c arrays subscript c11

引用C11标准:

阵列子装(第6.5.2.1节)

下标操作符的定义[]E1[E2]相同(*((E1)+(E2))).

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

ken*_*ytm 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段中的当前措辞非常令人困惑.