Amo visceralmente questo linguaggio, va detto. Tuttavia mi sento un po’ imbarazzato davanti alla sua “flessibilità”; poniamo che una mattina voglia scrivere una cosa del genere:
#include <iostream>
int main() {
int a[10] = {1,2,3,4,5,6,7,8,9,0};
std::cout << a[5] << std::endl;
std::cout << 5[a] << std::endl;
return 1;
}
il compilatore dovrebbe cazziarmi e invece se ne sbatte allegramente della 3a riga del main e l’output è il seguente:
Florida:~ banshee$ g++ test.cpp -Wall
Florida:~ banshee$ ./a.out
6
6
E se vi state per caso chiedendo il perché di tutto questo dolore la risposta è (sorprendentemente) semplice
Quando noi scriviamo a[5] non facciamo altro che scrivere una cosa del tipo *(a+5), ok? Questo è esattamente uguale a *(5+a) che, quindi, è esattamente equivalente a scrivere 5[a]. Semplice no?
E poi ci si chiede come mai la gente quando vede il C++ si spaventa… davanti a comportamenti del genere non posso far altro che restare basito pure io.


