Registrierung Kalender Mitgliederliste Teammitglieder Suche Häufig gestellte Fragen Zur Startseite

Informatiker Board » Themengebiete » Praktische Informatik » Inkrement - und Dekrementoperatoren » Hallo Gast [Anmelden|Registrieren]
Letzter Beitrag | Erster ungelesener Beitrag Druckvorschau | An Freund senden | Thema zu Favoriten hinzufügen
Neues Thema erstellen Antwort erstellen
Zum Ende der Seite springen Inkrement - und Dekrementoperatoren
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
HJ.S
unregistriert
Inkrement - und Dekrementoperatoren Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

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.
24.01.2016 18:12
eulerscheZahl eulerscheZahl ist männlich
Foren Gott


Dabei seit: 04.01.2013
Beiträge: 2.859

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

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.

__________________
Syntax Highlighting fürs Board (Link)
24.01.2016 18:17 eulerscheZahl ist offline Beiträge von eulerscheZahl suchen Nehmen Sie eulerscheZahl in Ihre Freundesliste auf
ed209
Routinier


Dabei seit: 07.09.2006
Beiträge: 324

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

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
24.01.2016 18:18 ed209 ist offline E-Mail an ed209 senden Beiträge von ed209 suchen Nehmen Sie ed209 in Ihre Freundesliste auf
HJ.S
unregistriert
Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

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?
24.01.2016 19:01
eulerscheZahl eulerscheZahl ist männlich
Foren Gott


Dabei seit: 04.01.2013
Beiträge: 2.859

Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

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


__________________
Syntax Highlighting fürs Board (Link)
24.01.2016 20:20 eulerscheZahl ist offline Beiträge von eulerscheZahl suchen Nehmen Sie eulerscheZahl in Ihre Freundesliste auf
HJ.S
unregistriert
Auf diesen Beitrag antworten Zitatantwort auf diesen Beitrag erstellen Diesen Beitrag editieren/löschen Diesen Beitrag einem Moderator melden       Zum Anfang der Seite springen

Vielen Dank :-)
24.01.2016 20:39
Baumstruktur | Brettstruktur
Gehe zu:
Neues Thema erstellen Antwort erstellen
Informatiker Board » Themengebiete » Praktische Informatik » Inkrement - und Dekrementoperatoren