Blick auf den Ausdruck:
i = i++ + f1(i);
Eine Sache, die Sie brauchen hier zu verstehen ist, was genau i++
tut und kehrt: es erhöht i
, aber gibt den alten Wert von i
. Also, wenn i == 0
, dann i++
schreitet i
zu 1
, aber der resultierende Wert des Ausdrucks ist 0
.
In Java werden Ausdrücke von links nach rechts ausgewertet. In dem obigen Ausdruck wird i++
zuerst ausgewertet und dann f1(i)
.
Nach i++
, i == 1
so ist f1(i)
eigentlich f1(1)
. Diese Methode gibt den Wert i
, also 1
, mit einem Komma nach und gibt 0
zurück.
Da i++
den alten Wert von i
zurück (bevor es erhöht wurde), der Ausdruck wird:
i = 0 + 0;
Der erste 0
das Ergebnis i++
ist, ist der zweite 0
das Ergebnis f1(i)
. So wird i
0
zugewiesen. Schließlich drucken Sie den Wert i
.
haben Sie versucht, es Schritt für Schritt zu debuggen? –