Note sul comportamento dell'operatore primario di incremento ++ (e --)

Scritto da  Luca Cestola il mercoledì 26 maggio 2010  •  Linguaggio: C#   • Livello: 100


Eseguendo il codice:

int i = 1;
i = i++;
Console.WriteLine(i);


la variabile i mostrata a video contiene il valore 1 e non 2, come potrebbe sembrare ad una rapida occhiata. Questo è dovuto al funzionamento interno del compilatore, che prima di eseguire l'incremento, crea una copia temporanea della variabile i ed esegue l'assegnazione, ad i stessa, con il valore della copia contenente il vecchio valore.

La logica è la seguente:

  • assegna 1 ad i
  • copia i in [temporanea]
  • incrementa i
  • assegna temp ad i

L'esempio esposto chiaramente non ha senso, ma serve a capire il comportamento dell'operatore in espressioni più complesse.

Per chi non si accontenta, da Visual Studio Debug->Windows->Disassembly è possibile vedere il codice generato dal compilatore.


Tags: compilatore,linguaggio

 
x