Credo che la cosa dipenda da compilatore a compilatore.
Sotto Windows (con Dev-Cpp) ottengo questo risultato:
codice:
0 0 1
0 1 1
Che che che?????
0 0 1
0 1 1
Ora va gia' meglio..
Mentre sotto Linux ottengo questo:
codice:
1 0 0
1 1 0
Che che che?????
0 0 1
0 1 1
Ora va gia' meglio..
Apparentemente sembrerebbe più corretto il risultato ottenuto sotto Windows, ma se si va a vedere la regola di valutazione delle espressioni risulta corretto il risultato Linux (quello che hai postato tu, io non lo ottengo...): le espressioni sono sempre valutate da destra a sinistra.
Quindi la prima istruzione:
codice:
cout << i << " " << i++ << " " << i << endl;
Viene valutata in questo ordine:
codice:
cout << i << " " << i++ << " " << i << endl;
cout << i << " " << i++ << " " << 0 << endl;
cout << i << " " << i++ << " " << 0 << endl;
cout << i << " " << 0 << " " << 0 << endl;
cout << i << " " << 0 << " " << 0 << endl;
cout << 1 << " " << 0 << " " << 0 << endl;
Con il risultato seguente:
Ciao.