Operatoren i=i++; Was passiert hier?

Weder passen deine einzelnen Zeilen zu dem Block, noch gibt es da irgendwo eine inkrementierung von tmp
Die Variable tmp habe ich nur von Dir übernommen, um den Zwischenspeicher zu verdeutlichen. (War Deine Idee)
Genauer erklärt wird das ganze von @Meniskusschaden

3 iload_1 // 8 wird aus Variable i gelesen und auf Stack gelegt: : tmp = i;
4 iinc 1 1 // Variable i wird inkrementiert und enthält jetzt 9 : i++;
7 istore_1 // 8 wird vom Stack entfernt und in Variable i gespeichert. i enthält wieder 8. i = tmp;
 
Die Variable tmp habe ich nur von Dir übernommen, um den Zwischenspeicher zu verdeutlichen. (War Deine Idee)
Genauer erklärt wird das ganze von @Meniskusschaden

3 iload_1 // 8 wird aus Variable i gelesen und auf Stack gelegt: : tmp = i;
4 iinc 1 1 // Variable i wird inkrementiert und enthält jetzt 9 : i++;
7 istore_1 // 8 wird vom Stack entfernt und in Variable i gespeichert. i enthält wieder 8. i = tmp;
Ich bezog mich ja auch auf das Inkrementieren von tmp, nicht auf nur tmp :)

Mit tmp (bzw Stack/Register) wird halt nichts gemacht, da landet kurz der Wert von i um danach wieder zurückgeschrieben zu werden.


Edit: Um bei deinem Beispiel zu bleiben:
Java:
int i = 1;
i = 1 + i++;
Ist äquivalent zu:
Java:
int i = 1;
int tmp = i;
i++;
i = 1 + tmp;
Da gibts einfach kein tmp++
 
Zuletzt bearbeitet:
Passende Stellenanzeigen aus deiner Region:

Neue Themen

Oben