Operatori di incremento e decremento suffisso: ++ e --

Sintassi

postfix-expression ++
postfix-expression --

Osservazioni:

In C++ sono disponibili operatori di incremento e decremento prefisso e suffisso. In questa sezione verranno descritti solo gli operatori di incremento e decremento suffisso. Per altre informazioni, vedere Operatori di incremento e decremento del prefisso. La differenza tra i due è che nella notazione suffisso l'operatore viene visualizzato dopo postfix-expression, mentre nella notazione del prefisso l'operatore viene visualizzato prima dell'espressione. L'esempio seguente mostra un operatore postfix-increment:

i++;

L'effetto dell'applicazione dell'operatore di incremento del prefisso (++) è che il valore dell'operando viene aumentato di un'unità del tipo appropriato. Analogamente, l'effetto dell'applicazione dell'operatore di decremento suffisso (--) è che il valore dell'operando viene ridotto di un'unità del tipo appropriato.

È importante notare che un'espressione di incremento o decremento suffisso restituisce il valore dell'espressione prima dell'applicazione del rispettivo operatore. L'operazione di incremento o decremento si verifica dopo la valutazione dell'operando. Questo problema si verifica solo quando l'operazione di decremento o di decremento in forma suffissa viene eseguita nel contesto di un'espressione più estesa.

Quando un operatore suffisso viene applicato a un argomento di funzione, non è garantito che il valore dell'argomento venga incrementato o decrementato prima di essere passato alla funzione. Per ulteriori informazioni, vedere la sezione 1.9.17 in C++ standard.

L'applicazione dell'operatore di incremento suffisso a un puntatore a una matrice di oggetti di tipo long aggiunge effettivamente quattro alla rappresentazione interna del puntatore. Questo comportamento fa sì che il puntatore, precedentemente indicato all'n elemento della matrice, faccia riferimento all'elemento (n+1)th.

Gli operandi per gli operatori di incremento e decremento suffisso devono essere modificabili (non const) l-values di tipo aritmetico o puntatore. Il tipo del risultato è uguale a quello di postfix-expression, ma non è più un l-value.

Visual Studio 2017 versione 15.3 e successive (disponibile in /std:c++17 modalità e versioni successive): l'operando di un operatore di incremento o decremento suffisso potrebbe non essere di tipo bool.

Il codice seguente illustra l'operatore di incremento suffisso:

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

Le operazioni di post-decremento e post-incremento sui tipi enumerati non sono supportate:

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

Vedi anche

Espressioni di suffissi
Operatori C++, precedenza e associazione
Operatori di incremento e decremento in forma suffissa C