Condividi tramite


Incremento e operatori di incremento e decremento di prefisso: C++ e --

++ unary-expression
–– unary-expression

Note

l'operatore di incremento di prefisso (++) aggiunge uno al suo operando; questo valore viene incrementato il risultato dell'espressione.L'operando deve essere un l-value non di tipo const.Il risultato è un l-value dello stesso tipo dell'operando.

l'operatore di decremento di prefisso (ovvero) è analogo all'operatore di decremento di prefisso, ad eccezione del fatto che l'operando diminuisce da uno e il risultato è questo valore viene decrementato.

Quando un operatore del prefisso viene applicato a un argomento della funzione, il valore dell'argomento non è garantito possibile incrementare o per diminuisce prima di essere passato alla funzione.Vedere la parte 1.9.17 nello standard C++ per ulteriori informazioni.

Sia il prefisso che incrementano suffisso gli operatori di incremento e decremento suffissi influiscono sui propri operandi.La differenza principale tra loro quando si incrementano o i decrementi ha luogo nella valutazione di un'espressione.(Per ulteriori informazioni, vedere Decremento suffisso e operatori di incremento). Nel form di prefisso, incremento o i decrementi ha luogo prima che il valore venga utilizzato nella valutazione di un'espressione, pertanto il valore dell'espressione è diverso dal valore dell'operando.In forma suffissa, incremento o i decrementi si verifica dopo che il valore è utilizzato per la valutazione di un'espressione, pertanto il valore dell'espressione corrisponde al valore dell'operando.Ad esempio, il seguente programma stampa “++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;
}

Un operando di tipo integrale o mobile viene incrementato o diminuisce dal valore intero 1.Il tipo del risultato sarà lo stesso del tipo dell'operando.Un operando di tipo puntatore viene incrementato o diminuisce dalla dimensione dell'oggetto che è destinato a.Punti incrementati di un puntatore all'oggetto successivo; punti diminuisce di un puntatore all'oggetto precedente.

Poiché gli operatori di incremento e hanno effetti collaterali, utilizzando le espressioni con incremento o gli operatori di incremento in un oggetto macro del preprocessore può produrre risultati indesiderati.Si consideri l'esempio seguente:

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

la macro si espande:

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

se i è maggiore o uguale a j o minore di j da 1, viene incrementato due volte.

[!NOTA]

Le funzioni inline C++ sono preferibili le macro in molti casi poiché eliminano gli effetti collaterali come quelle descritte qui e che consentono al linguaggio di eseguire un controllo di tipo completo.

Vedere anche

Riferimenti

Espressioni con gli operatori unari

Operatori di C++

Precedenza e associatività di operatore

Concetti

Incremento e operatori di incremento e decremento di prefisso