Hey, ich bin gerade auf folgenden Code gestossen:
Ergebnis : 0
Ich finde das etwas seltsam. Beim Verarbeiten des folgenden Codes:
wird doch folgendermassen vorgegangen:
1) a = alter Wert von b (=0)
2) b += 1 (=1)
Nehmen wir also nochmal das Bsp von oben, müsste es doch analog dazu so funktionieren:
1) tricky = alter Wert von tricky (=0)
2) tricky += 1 (= 0+1 = 1)
Aber tricky ist danach nicht 1, sondern 0. Irgendwo geht hier die Inkrementation völlig verloren! Und
ich weiss nicht wo. Kann mir das einer Schritt für Schritt erklären bitte?
edit:
Jetzt nachdem ich es geschrieben habe ist mir glaub ich eingefallen wieso das so ist. Java arbeitet
wohl beim Statement
folgendermassen:
1) Speichere alten Wert von b in Zwischenablage
2) b += 1
3) a = Zwischenablage
Anders kann ich mir das nicht erklären. Könnt ihr das bestätigen?
Code:
int tricky = 0;
for (int i = 0; i < 100; i++) {
tricky = tricky++;
}
System.out.println(tricky);
Ergebnis : 0
Ich finde das etwas seltsam. Beim Verarbeiten des folgenden Codes:
Code:
int a = 0;
int b = 0;
a = b++;
wird doch folgendermassen vorgegangen:
1) a = alter Wert von b (=0)
2) b += 1 (=1)
Nehmen wir also nochmal das Bsp von oben, müsste es doch analog dazu so funktionieren:
1) tricky = alter Wert von tricky (=0)
2) tricky += 1 (= 0+1 = 1)
Aber tricky ist danach nicht 1, sondern 0. Irgendwo geht hier die Inkrementation völlig verloren! Und
ich weiss nicht wo. Kann mir das einer Schritt für Schritt erklären bitte?
edit:
Jetzt nachdem ich es geschrieben habe ist mir glaub ich eingefallen wieso das so ist. Java arbeitet
wohl beim Statement
Code:
a = b++;
folgendermassen:
1) Speichere alten Wert von b in Zwischenablage
2) b += 1
3) a = Zwischenablage
Anders kann ich mir das nicht erklären. Könnt ihr das bestätigen?