Inkrementierungs- und Dekrementierungsoperatoren in Postfixnotation: ++ und --

postfix-expression ++ 
postfix-expression ––

Hinweise

C++ bietet Präfix- und Postfixinkrement- und Dekrementoperatoren. Dieser Abschnitt beschreibt nur die Postfixinkrement- und Dekrementoperatoren. (Weitere Informationen finden Sie unter Präfixinkrement- und Dekrementoperatoren). Der Unterscheid zwischen beiden besteht darin, dass in der Postfix-Notation der Operator nach postfix-expression angezeigt wird, wohingegen in der Präfix-Notation der Operator vor expression. angezeigt wird. Das folgende Beispiel zeigt einen Postfixinkrement-Operator:

i++;

Durch die Anwendung des Postfix-Inkrement-Operators (++) wird der Wert des Operanden um eine Einheit des entsprechenden Typs erhöht. Entsprechend wird durch das Anwenden des Postfix-Dekrementoperators (––) der Wert des Operanden um eine Einheit des entsprechenden Typs verringert.

Beachten Sie unbedingt, dass ein Postfixinkrement- oder Dekrementausdruck zum Wert der Ausdrucks vor Anwendung des jeweiligen Operators ausgewertet wird. Der Inkrement- oder Dekrementvorgang geschieht, nachdem der Operand ausgewertet wurde. Dieses Problem tritt nur auf, wenn der Postfix-Inkrement- oder Postfix-Dekrementvorgang im Kontext eines umfassenderen Ausdrucks stattfindet.

Wenn ein Postfix-Operator auf ein Funktionsargument angewendet wird, ist für den Wert des Arguments nicht gewährleistet, dass er vor der Übergabe an die Funktion inkrementiert oder dekrementiert wird. Weitere Informationen finden Sie in Abschnitt 1.9.17 im C++-Standard.

Durch die Anwendung des Postfixinkrement-Operators auf einen Zeiger, der auf ein Array von Objekten des Typs long verweist, werden der internen Darstellung des Zeigers 4 hinzugefügt. Dieses Verhalten führt dazu, dass der Zeiger, der zuvor auf das n-te Element des Arrays verwiesen hat, nun auf das (n+1)-te Element verweist.

Die Operanden der Postfixinkrement- und Postfixdekrement-Operatoren müssen veränderbare (nicht Const) l-Werte des arithmetischen Typs oder Zeigertyps sein. Der Ergebnistyp entspricht dem Typ von postfix-expression, aber es ist kein l-Wert mehr.

Der Operand des Postfixinkrement-Operators kann vom Typ bool sein. In diesem Fall wird der Operand ausgewertet und dann auf true gesetzt. Der Operand eines Postfixdekrement-Operators kann nicht vom Typ bool sein.

Der folgende Code veranschaulicht den Postfixinkrement-Operator:

// expre_Postfix_Increment_and_Decrement_Operators.cpp
// compile with: /EHsc
#include <iostream>
using namespace std;

int main() {
   int i = 10;
   cout << i++ << endl;
   cout << i << endl;
}

Postinkrement- und Postdekrementvorgänge für Enumerationstypen werden nicht unterstützt:

enum Compass { North, South, East, West );
Compass myCompass;
for( myCompass = North; myCompass != West; myCompass++ ) // Error

Siehe auch

Referenz

Postfixausdrücke

C++-Operatoren

C++-Operatoren, Rangfolge und Assoziativität

C - Inkrementierungs- und Dekrementierungsoperatoren in Postfixnotation