c - 关于数组下标运算符

标签 c arrays subscript c11

引用自 C11 标准:

Array subsripting (§ 6.5.2.1)

The definition of the subscript operator [] is that E1[E2] is identical to (*((E1)+(E2))).

我想知道为什么 E1 周围的括号是必需的(它们在 C89 标准中缺失),ie 其中表达式可以 (*( E1+(E2)))(*((E1)+(E2))) 不同吗?

最佳答案

根据 http://www.open-std.org/jtc1/sc22/wg14/www/docs/n841.htm , 只是为了清楚起见才插入。这两个表达式在语法上是等价的。

Public Comment Number PC-UK0103
Comment 1.
Category: Editorial change/non-normative contribution
Committee Draft subsection: 6.3.2.1
Title: Array subscripting example
Detailed description:

Paragraph 2 should replace "(*(E1+(E2)))" by "(*((E1)+(E2)))", to avoid confusion. Yes, I know that the syntactic chart makes it quite unambiguous, but the current wording in paragraph 2 is very confusing.

关于c - 关于数组下标运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12201210/

相关文章:

c - 如何在 C 中写入文件中的特定地址

c++ - 使用成员函数求解方程 C++

java - 如何比较两个对象数组元素?

java - Android 中的字符串下标和上标

swift - 在 Swift 中获取字符串的第 n 个字符

C将char数组传递给函数,用另一个char数组计算并复制

fork 后子进程永远不会执行

选择中间语言

java - 在 O(n) 时间内查找排序链表中的重复项

utf-8 - 下标字母的UTF8符号