Note sul comportamento dell'operatore primario di incremento ++ (e --)
Scritto da
Luca Cestola il
mercoledì 26 maggio 2010
•
Linguaggio:
• 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