Share via


Präfix-Inkrement und Operatoren: C++-Datei und --

++ unary-expression
–– unary-expression

Hinweise

Mit dem Präfix (inkrementoperator Einfügungen seinem Operanden++) hinzu. inkrementierte dieser Wert lautet das Ergebnis des Ausdrucks.Der Operand muss ein L-Wert nicht vom Typ constsein.Das Ergebnis ist ein l-Wert des gleichen Typs wie der Operand.

Mit dem Präfix (dekrementoperator--inkrementoperator dem Präfix ist), mit der Ausnahme, dass der Operand wird durch einen verringert und das Ergebnis ist dieser dekrementierte Wert.

Wenn kein Präfixoperator auf ein Funktionsargument angewendet wird, wird der Wert des Arguments nicht inkrementiert oder dekrementiert werden soll, bevor er an die Funktion übergeben wird.Weitere Informationen finden Sie im Abschnitt 1.9.17 C++-Standard.

beeinflussen das Präfix und das Postfixinkrement und Dekrementoperatoren ihre Operanden.Der Hauptunterschied zwischen ihnen ist, wenn das Inkrement oder Dekrement bei der Auswertung eines Ausdrucks ausgeführt wird.(Weitere Informationen finden Sie unter Postfixinkrement und Dekrementoperatoren). In der Form Präfix findet das Inkrement oder Dekrement statt, bevor der Wert in der Ausdrucksauswertung verwendet wird, daher ist der Wert des Ausdrucks auf den Wert des Operanden verschieden.In der Postfix Form findet das Inkrement oder Dekrement statt, nachdem der Wert in der Ausdrucksauswertung verwendet wird, daher ist der Wert des Ausdrucks der gleiche wie der Wert des Operanden.Zum Beispiel gibt das folgende Programm „++i = 6“:

// expre_Increment_and_Decrement_Operators.cpp
// compile with: /EHsc
#include <iostream>

using namespace std;

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

Ein Operand des Integrals oder vom Typ float wird durch den ganzzahligen Wert inkrementiert oder dekrementiert. 1.Der Typ des Ergebnisses entspricht dem Operandentyp.Ein Operand des Zeigertyps wird von der Größe des Objekts inkrementiert oder dekrementiert, das behoben werden.Ein inkrementierter Zeiger verweist auf das nächste Objekt. dekrementierter ein Zeiger verweist auf das vorherige Objekt.

Da Inkrementieren und Dekrementoperatoren Nebeneffekte haben, mithilfe von Ausdrücken mit Inkrement oder Dekrementoperatoren können unerwünschte Ergebnisse in Präprozessor Makro haben.Betrachten Sie das folgende Beispiel:

// expre_Increment_and_Decrement_Operators2.cpp
#define max(a,b) ((a)<(b))?(b):(a)

int main()
{
   int i = 0, j = 0, k;
   k = max( ++i, j );
}

Das Makro erweitert:

k = ((++i)<(j))?(j):(++i);

Wenn i größer oder gleich j oder kleiner als j durch 1 (null) ist, wird es zwei Mal inkrementiert.

HinweisHinweis

C++-Inlinefunktionen sind in vielen Fällen für Makros vorzuziehen, da diese Nebeneffekte, wie die hier beschriebenen zulassen und der Programmiersprache, um weitere Ausführung vollständige Typüberprüfung.

Siehe auch

Referenz

Ausdrücke mit unären Operatoren

C++-Operatoren

Operatorrangfolge und Assoziativität

Konzepte

Präfix-Inkrement und Operatoren