Inkrement - und Dekrementoperatoren

Neue Frage »

Auf diesen Beitrag antworten »
HJ.S Inkrement - und Dekrementoperatoren

Meine Frage:
Hallo,

eine Frage zu Inkrement und Dekrementoperatoren.

Inkremet bedeutet doch, dass eine Variable (ich nenne sie a) um 1 erhöht wird (je nachdem ob Pre-Inkrement oder Postinkrement ist der Rückgabewert a+1 oder a).

Meine Frage ist zu Postinkrement: Wann wird denn die Erhöhung der Variable durchgeführt? Erst wenn die komplette Codezeile durchgeführt ist? Oder ganze Anweisungsblöcke? Ich werde da nicht schlau daraus :-)

Meine Ideen:
Vielen Dank.
 
Auf diesen Beitrag antworten »
eulerscheZahl

Nach der Anweisung.
Beispiel:
a = 1
b = a++; //b=1, a=2
Du kannst aber auch Murks damit machen:
a = a++; //nicht definiert, solltest du deshalb lieber nicht machen.
b = a++ + ++a; //auch nicht definiert
Wenn du eine Variable mit a++ bzw. ++a erhöhst, darf sie im restlichen Ausdruck nicht nochmal vorkommen.
Auf diesen Beitrag antworten »
ed209

Beides wird zur selben Zeit ausgefuehrt. Der Unterschied ist der Rueckgabewert.

Versuche folgenden Code auszuführen. Sowohl a als auch b haben am Ende denselben Wert.

code:
1:
2:
3:
4:
5:
6:
int a=42; 
System.out.println("Postinkrement: ".(a++));
int b=42;
System.out.println("Präinkrement: ".(++b));


Der Code ist in Java, aber sollte leicht in andere Sprachen überführbar sein.

Gruss,
ED
Auf diesen Beitrag antworten »
HJ.S

Vielen Dank für die Antworten.

Wenn ich jetzt folgenden Code habe:

[CODE]
int x, z=10;
System.out.println(x=z++); // z++ wird ausgewertet, z = 10; z wird in x geschrieben und z um 1 erhöht auf 11; x = 10, z=11;
System.out.println (z = ++x); //x wird zuerst um eins erhöht und dann z zugewiesen, also ist z = 11 und x = 11;
System.out.println (x += ++z); // ++z hat die höhere Priorität, also wird z=12, x=11 und das Resultat 23;
System.out.println (z += x++); // x++ hat wieder höhere Priorität, bleibt aber vorerst bei 23 , z = z+x; somit als Ergebnis 35.


Wäre das richtig?
 
Auf diesen Beitrag antworten »
eulerscheZahl

Probier es doch einfach aus. Augenzwinkern
Ja, es ist richtig.
code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
int x, z = 10;
System.out.println(x = z++); //10
System.out.println("x = " + x + "   z = " + z); //x = 10   z = 11
System.out.println(z = ++x); //11
System.out.println("x = " + x + "   z = " + z); //x = 11   z = 11
System.out.println(x += ++z); //23
System.out.println("x = " + x + "   z = " + z); //x = 23   z = 12
System.out.println(z += x++); //35
System.out.println("x = " + x + "   z = " + z); //x = 24   z = 35
Auf diesen Beitrag antworten »
HJ.S

Vielen Dank :-)
 
Neue Frage »
Antworten »


Verwandte Themen

Die Beliebtesten »
Die Größten »
Die Neuesten »