Sdílet prostřednictvím


Operátory přírůstku a snížení předpony: ++ a --

++ unary-expression –– unary-expression

Poznámky

Operátor je předpona přírůstek (++) přičítá k jeho operand; Tato zvýšená hodnota je výsledkem výrazu.Operand musí být hodnota l není typu konstantní.Výsledkem je hodnota l jako operand stejného typu.

Operátor je předpona snížení hodnoty (– –) se podobá operátoru přírůstek předponu, s tím rozdílem, že operand je snížená jedním a výsledkem je tato snížená hodnota.

Předpona a přípona přírůstek i snížení hodnoty operátory ovlivnit operandy.Klíče rozdíl mezi nimi je pořadí, ve kterém zvýšení nebo snížení hodnoty probíhá vyhodnocení výrazu.(Další informace naleznete v tématu postfixový zvýšení a snížení hodnoty operátory.) Ve formuláři předpona zvýšení nebo snížení hodnoty probíhá před hodnota se používá v vyhodnocení výrazu, takže hodnota výrazu se liší od hodnoty operandu.Ve formuláři přípona zvýšení nebo snížení hodnoty se provádí po hodnota se používá v vyhodnocení výrazu, takže hodnota výrazu je stejná jako hodnota operandu.Například následující program vytiskne "++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;
}

Operand nedílnou nebo plovoucí typu je zvýšená nebo snížená celočíselná hodnota 1.Typ výsledku je stejný jako typ operandu.Operand typ ukazatele je zvýšená nebo snížená podle jejich velikosti objektů, které řeší.Zvýšená ukazatel odkazuje na další objekt; snížená ukazatel odkazuje na předchozí objekt.

Protože zvýší a sníží operátory mít vedlejší účinky, pomocí výrazů s operátory zvýšení nebo snížení hodnoty v preprocessor macro mohou mít nežádoucí výsledky.Zvažte v tomto příkladu:

// 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 zasahuje do:

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

Pokud i je větší než nebo rovno j nebo méně než j o 1, ji se zvýší dvakrát.

[!POZNÁMKA]

C++ vložených funkcí je vhodnější makra v řadě případů, protože se vyhnete vedlejší účinky, jako jsou zde popsané a povolit jazyk, který chcete provést podrobnější kontrolu typu.

Viz také

Referenční dokumentace

Výrazy s unárními operátory

Operátory jazyka C++

Operátory C++, priorita a asociativita

Koncepty

Operátory přírůstku a snížení předpony