View Single Post
Old 10-03-2010, 13:34   #7
flx2000
Bannato
 
L'Avatar di flx2000
 
Iscritto dal: Nov 2002
Città: Roma
Messaggi: 810
Quote:
Originariamente inviato da Antonio23 Guarda i messaggi
quindi secondo te l'incremento quando viene fatto? mica l'ho capita la spiegazione che hai dato... e soprattutto, l'hanno compilato e stampa 1 (non ho tempo di provarlo personalmente ora...)
E' un tipico caso di programmazione che dipende dal compilatore.

L'ho verificato io stesso pochi istanti fa con VS C++ e C# e dà 0.
Dovrei provare con g++ per vedere se dà 1.

Di fatto, la "logica" naturale (del gcc ad esempio) vuole che si legga in questo modo: "Viene eseguita l'operazione a destra e alla fine assegnata alla parte sinistra".
Allora è chiaro che le fasi sarebbero:
1. Eseguo l'incremento (a passa da 0 a 1)
2. Lo assegno a se stesso (a resta a, cioè 1)

Diversi compilatori possono generare diversi risultati se si trovano a lavorare su funzioni di questo tipo perché dipende tutto da come usano lo stack, che non a caso è una delle cose che differenzia maggiormente tra loro i compilatori.

Ultima modifica di flx2000 : 10-03-2010 alle 13:36.
flx2000 è offline   Rispondi citando il messaggio o parte di esso