Il seguente programma C++ viene compilato senza errori da clang++
e va in esecuzione con i risultati che si vedono.
Nel secondo stmt cout la scrittura: 2[a] mi sembra incredibile.
Come si giustifica grammaticalmente?
A quale proprieta' dell'operatore [] deve essere ascritta?
Anche il dereferenziamento: *(2+a) mi torna nuovo.
#include <iostream>
int main ()
{
int a[5] = {11,22,33,44,55};
std::cout << "-------- output --------" << std::endl;
std::cout << a[2] << std::endl; // (1) OK, qui 2 e' indice di elemento dell'array a
std::cout << 2[a] << std::endl; // (2) ma qui?
std::cout << *(a+2) << std::endl; // (3) OK, aritmetica dei pointer
std::cout << *(2+a) << std::endl; // (4) ?
return 0;
}
/*
-------- output --------
33
33
33
33
*/
Ringrazio in anticipo chi vorra' spiegarmi questa insolita scrittura: 2[]a
Vito Di Blas