In With arrays, why is it the case that a[5] == 5[a]? viene esplicitato che l'operatore []
in a[5]
è definito come *(a + 5)
e perché +
è commutativo, 5[a]
significa *(5 + a)
e quindi le due espressioni si riferiscono alla stessa posizione di memoria. Belle.Perché 5 [a] è valido e non genera un errore di identificatore non valido?
Tuttavia, in 6.4.2 C definisce anche che un identificatore non può iniziare con una cifra. In 5[a]
l'identificatore di array è 5
che non è un identificatore valido. Perché 5[a]
non genera un errore su un identificatore non valido?
FYI: lo standard C utilizza il termine _integer constant_ (che chiarisce che non ci sono costanti (simboliche) come in altre lingue). – Olaf