Operatory prefiksów inkrementacji i dekrementacji: ++ i --

++ unary-expression –– unary-expression

Uwagi

Operator przyrostu prefiks (++) doda do jej argument operacji; Ta zwiększona wartość jest wynikiem wyrażenia.Argument musi być wartością l innego typu niż stała.Wynik jest wartością l tego samego typu jako argument.

Operator Zmniejsz prefiks (— —) jest odpowiednikiem operatora przyrostu prefiksu, z tą różnicą, że argument jest zmniejszana o jeden i wynik jest zmniejszona wartość.

Prefiks i przyrostek przyrostu i zmniejszenie operatorów wpływa na ich argumentów.Klucza różnica między nimi jest kolejność, w którym przyrostu lub Zmniejsz odbywa się podczas obliczania wyrażenia.(Aby uzyskać więcej informacji, zobacz przyrostkowe przyrostu i zmniejszenie operatorów.) W formularzu prefiks przyrostu lub Zmniejsz odbywa się przed wartość jest używany podczas obliczania wyrażenia, wartość wyrażenia jest inna niż wartość argumentu operacji.W formularzu przyrostkowe przyrostu lub Zmniejsz odbywa się po wartość jest używany podczas obliczania wyrażenia, wartość wyrażenia jest taka sama jak wartość argumentu operacji.Na przykład poniższa program wydruku "++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;
}

Argument typu integralną lub przestawne jest zwiększona lub zmniejszona o wartość całkowitą 1.Typ wyniku jest taki sam, jak typ argumentu.Argument typu wskaźnik jest zwiększona lub zmniejszona przez rozmiar obiektu, których on dotyczy.Wskazuje zwiększona wskaźnik do następnego obiektu. zmniejszona wskaźnik punktów do poprzedniego obiektu.

Ponieważ operatorów przyrostu i zmniejszenie ma efekty uboczne, używając wyrażeń z operatorami przyrost lub zmniejszenie w preprocessor makra może mieć niepożądane wyniki.Rozważmy następujący przykład:

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

Makra rozwijany do:

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

Jeśli i jest większa lub równa j lub mniej niż j o 1, jego jest zwiększany dwa razy.

[!UWAGA]

C++ wbudowane funkcje są zamiast makra w wielu przypadkach, ponieważ eliminuje skutki uboczne, takich jak opisane w tym miejscu i Zezwalaj na język do sprawdzania pełniejsze typu.

Zobacz też

Informacje

Wyrażenia z operatorami jednoargumentowymi

Operatory języka C++

Operatory, pierwszeństwo i kojarzenie języka C++

Koncepcje

Operatory prefiksów inkrementacji i dekrementacji