Citando de la norma C11:sobre el operador array subscripting
matriz subsripting (§ 6.5.2.1)
La definición del operador subíndice
[]
es queE1[E2]
es idéntica a(*((E1)+(E2)))
.
me gustaría saber por qué son los corchetes de E1
necesaria (que se estaban perdiendo en la norma C89), es decir en el que la expresión puede ser diferente de (*(E1+(E2)))
(*((E1)+(E2)))
?
Mi única conjetura es que el primero significa que E2 se evalúa antes que E1. Este último no da prioridad y los paréntesis están anidados por igual. No tengo idea por qué. –
No escribí esa línea, o ninguna línea en el estándar, pero mi GUESS es que "E1" y "E2" son expresiones, y solo querían enfatizar que E1 se evalúa completamente incluso cuando básicamente " cópiala y pégala en la descripción. –
Estoy totalmente de acuerdo con @ChristianStieber. Además, debe tener en cuenta que '+' y '[]' tienen prioridades diferentes, de modo que si 'E1' es una expresión, podría vincularse de manera diferente al' + 'detrás. –