Mittwoch, 31. Oktober 2012

Prä- und Postfix Inkremente bzw. Dekremente

Da es bei diesem Thema häufig zu Missverständnissen kommt, sei hier nur kurz erklärt wo der Unterschied zwischen dem Prä- und dem Postfix Inkrement bzw. Dekrement liegt.

Der Unterschied ist nicht, dass a++ -> a=a+1 bzw a-- -> a=a-1 und ++a -> a=1+a bzw --a -> a=1-a. Diese Annahme fürt vor Allem bei --a häufig zu Fehlern.

Sowohl a++ / a-- und ++a /--a addieren bzw. subtrahieren den Wert 1 zu / von a.
Sprich --a -> a=a-1 und nicht 1-a!

Der große Unterschied ist jedoch, dass prä-Inkremente / Dekremente sofort der Variablen zugewisen werden und post-inkrementierte / dekrementierte Variablen erst nach der nächsten Verwendung um 1 erhöht werden.

Beispielcode in C++

01: int i = 1;
02: cout << ++i << endl;
03: cout << i++ << endl;
04: cout << ++i << endl; 

Beispielcode Java

01: int i = 1;
02: System.put.println(++i);
03: System.put.println(i++);
04: System.put.println(++i);

Ausgabe:
2
2
4