Unterschied bzw- Ablauf Prä-und PostInkrement

Hallo,

ich habe folgende Frage. Also vorab ich habe bereits in Büchern und Beiträgen aus anderen Foren eine Erklärung gesucht, welche mich sozusagen zufriedenstellt allerdings keine gefunden jetzt probiere ich es mal hier: Im Grunde ist es simpel und zwar ist es der konkrete Ablauf eines Prä- bzw. Postinkrements bei einer For-Schleife. ZBsp. diese hier:

PräInkrement: Erst wird der Wert erhöht und dann Ausgewertet bzw. gleich angewendet.

for (int j = 1; j die bedingung wird überprüft -> stimmt es dann wird die Anweisung System.out… ausgeführt -> dann wird der Wert erhöht und dieser neue Wert springt gleich in die Bedingung j die bedingung wird überprüft -> stimmt es dann wird die Anweisung System.out… ausgeführt -> dann wird der Wert erhöht und dieser neue Wert springt erst wieder in die Initialisierung j = 2 und dann erst in die Bedingung j

Hossa :smile:

Eine for-Schleife wird intern vom Compiler in eine while-Schleife umgewandelt. Allgemein gilt:

for (Initialisierung; Lauf-Bedingung; Inkrement)
{ ...
}

wird transformiert in:

Initialisierung;
while (Lauf-Bedingung)
{ ...
 Inkrement;
}

Bei einem „continue“ innerhalb der for-Schleife wird zum Inkrement gesprungen.

In deinem Fall heißt das konkret:

for (int j=0; j
wird transformiert zu:



    
    int j=0;
    while (j
    Viele Grüße
    
    Hasenfuß

Hallo,

in den For-Schleifen bzw. While-Schleifen treten die Inkrement-Anweisungen als eigenständige Anweisungen auf. Deswegen hat es auf die Funktionalität keine Auswirkung, ob Prä- oder Postinkrement. Anders ist es, wenn das mit einer anderen Anweisung verbunden wird:
i = 5
j = i++
k = ++i
Gehen wir zur ersten Inkrementanweisung. Hier ist das Ergebnis der rechten Seite der Zustand vor dem Inkrement. Also wird j der Wert 5 zugewiesen. Nach der Anweisung ist i = 6. Also erst Auswerten und dann erhöhen.
Bei der zweiten Anweisung wird erst erhöht und dann ausgewertet. k bekommt also den Wert 7.
Da bei Schleifen die Anweisung allein steht, interessiert da der Rückgabewert des Ausdrucks nicht. Und nur darauf hat Prä- und Postinkrement einen Einfluss.

Nico