Bisher ließen sich Werte folgendermaßen erhöhen:
i = i + 1;
Diese Möglichkeit ist zwar vollkommen richtig, jedoch nicht wirklich vorteilhaft. Um genau zu sein, ist diese Variante langsam. Bei einer Schleife mit z.B. 300 Durchläufen könnte man schon den Geschwindigkeitsverlust merken.
Es gibt sogenannte Inkrementoperatoren und Dekrementoperatoren.
Diese gehören zu den unären Operatoren, d.h. sie haben nur einen Operanden.
Das mag wahrscheinlich kompliziert klingen, ist es aber nicht unbedingt. So könnte man den Schleifenzähler auch erhöhen:
++i; /* Präinkrement */
Oder so:
i++; /* Postinkrement */
Wo liegt jetzt der Unterschied?
Nun, zuerst sollte man sich diese 'komplizierten' Begriffe ins Deutsche übersetzen. 'Prä' bedeutet soviel wie 'vor', 'post' soviel wie 'nach'. Ein Inkrement ist eine Erhöhung.
Die Begriffe Präfix und Postfix sind ebenfalls gültig.
Nehmen wir dieses Beispiel:
a = 1; b = ++a;
Hier wird a um eins erhöht, bevor b den Wert von a zugewiesen bekommt. Beide Variablen haben den Wert 2.
a = 1; b = a++;
Nun wird zuerst b der Wert von a zugewiesen. Danach wird a um eins erhöht. Jetzt hat a den Wert 2, b den Wert 1.
Der eigentlich Unterschied ist die Priorität. Das Präfix wird vor den anderen Anweisungen im Ausdruck ausgeführt, das Postfix nach den Anweisungen.
Das selbe geht auch abwärts. Dafür gibt es sogenannte Dekrementoperatoren. Diese haben auch ein Präfix und ein Postfix.
Der Befehl
i = i - 1;
kann auch dementsprechend auch so dargestellt werden:
--i;
Oder so:
i--;
Der Vorteil dieser Operatoren ist, dass diese Anweisung im Register des Prozessors und nicht im Arbeitsspeicher ausgeführt wird. Register sind kleine Zwischenspeicher im Prozessor. Wird ein Wert dorthin geladen, kann er schneller bearbeitet werden.
Hinweis: Es ist nicht zu empfehlen, mehrere Inkrement-/Dekrementoperatoren in einem Ausdruck zu verwenden. Die Reihenfolge der Ausführungen ist dann nicht festzustellen, was das Ergebnis unberechenbar macht.