Operatory przyrostka przyrostkowego i dekrementacji: ++ i --

Składnia

postfix-expression ++
postfix-expression --

Uwagi

Język C++ zawiera przedrostkowe i przyrostkowe operatory inkrementacyjne i dekrementacyjne; w tej sekcji opisano tylko przyrostkowe operatory inkrementacyjne i dekrementacyjne. (Aby uzyskać więcej informacji, zobacz Operatory inkrementacji i dekrementacji prefiksu). Różnica między nimi polega na tym, że w notacji postfiksu operator pojawia się po wyrażeniu-prefiksie, podczas gdy w notacji prefiksu operator pojawia się przed wyrażeniem. W poniższym przykładzie pokazano operator przyrostka postfiksu:

i++;

Efekt zastosowania operatora przyrostka przyrostkowego (++) polega na tym, że wartość operandu jest zwiększana przez jedną jednostkę odpowiedniego typu. Podobnie efekt zastosowania operatora dekrementacji postfiksu (--) polega na tym, że wartość operandu jest zmniejszona o jedną jednostkę odpowiedniego typu.

Należy pamiętać, że wyrażenie przyrostowe lub dekrementacyjne zwraca wartość wyrażenia przed zastosowaniem odpowiedniego operatora. Operacja przyrostu lub dekrementacji następuje po obliczeniu operandu. Problem występuje tylko wtedy, gdy przyrostkowa operacja inkrementacyjna lub dekrementacyjna występuje w kontekście większego wyrażenia.

Po zastosowaniu przyrostkowego operatora do argumentu funkcji, nie ma gwarancji, że wartość zostanie zwiększona lub zmniejszona przed przekazaniem jej do funkcji. Zobacz sekcję 1.9.17 w standardzie języka C++, aby uzyskać więcej informacji.

Zastosowanie operatora inkrementacji postfiksu do wskaźnika do tablicy obiektów typu long faktycznie dodaje cztery do wewnętrznej reprezentacji wskaźnika. To zachowanie powoduje, że wskaźnik, który wcześniej odniósł się do nth elementu tablicy, aby odwoływać się do elementu (n+1)th.

Operatory operandów do przyrostków postfiksów i operatorów dekrementacji postfiksów muszą być modyfikowalne (nie const) wartości l typu arytmetycznego lub wskaźnika. Typ wyniku jest taki sam jak typ wyrażenia postfiks-, ale nie jest już wartością l.

Program Visual Studio 2017 w wersji 15.3 lub nowszej (dostępny w /std:c++17 trybie i nowszym): operand operatora przyrostka lub dekrementacji może nie być typu bool.

Poniższy kod ilustruje przyrostkowy operator inkrementacyjny:

// 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;
}

Nie są obsługiwane operacje postinkrementacyjne i postdekrementacyjne na typach wyliczeniowych.

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

Zobacz też

Wyrażenia przyrostków
Wbudowane operatory, pierwszeństwo i kojarzenie języka C++
Operatory przyrostka inkrementacji i dekrementacji języka C