关于数组下标运算符

时间:2012-08-30 16:14:05

标签: c arrays subscript c11

引用C11标准:

  

数组子包(第6.5.2.1节)

     

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

我想知道为什么E1周围的括号必须(它们在C89标准中缺失), ie ,其中表达式(*(E1+(E2)))可能与(*((E1)+(E2)))不同{1}}?

1 个答案:

答案 0 :(得分: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段目前的措辞非常混乱。