La scelta di usare array[index]
è stata probabilmente fatta per seguire la convenzione matematica e il precedente impostato per gli array da altri linguaggi come ALGOL, FORTRAN e BASIC (gli ultimi due usano parentesi invece di parentesi). Questa decisione rende l'operatore anormale perché è un operatore binario, ma richiede di inserire un token aggiuntivo dopo l'espressione della mano destra.
L'operatore avrebbe potuto facilmente essere un singolo carattere ( @
non è parlato in C, quindi chiamiamolo "operatore addizione puntatore"). Poiché, come sottolinea la risposta di David Thornley nella summenzionata domanda SO , l'aggiunta del puntatore è commutativa, a @ 5
e 5 @ a
avere lo stesso senso (C precursore BCPL ha utilizzato !
per questo.)
In un certo senso è naturale guardare l'operatore dell'array comportarsi come una funzione, il che ha senso nel contesto dei linguaggi che fanno f(x)
per chiamare una funzione e a(i)
per accedere a un array. Poiché gli operatori in C non funzionano in questo modo, devi considerarlo come un operatore commutativo, binario con bagaglio.