Sdílet prostřednictvím


Předpona přírůstek a snižovat operátory: ++ a--

++ unary-expression
–– unary-expression

Poznámky

Operátor přírůstek předpony (++) přičítá jeho operand; Tento zvyšující hodnotu je výsledkem výrazu.Operand musí být hodnota l typu const.Výsledkem je hodnota l jako operand stejného typu.

Operátor snižovat předpony () je analogická předponu přírůstek provozovateli, s výjimkou, že operand je snížena o a výsledkem je hodnota snížena.

Pokud operátor předponu argumentu funkce, hodnota argumentu je nemusí být přírůstkovými nebo snížena před předaný funkci.V části 1.9.17 Standard C++ Další informace.

Snižovat i přírůstek předpony a Příponové operátory ovlivnit jejich operandy.Klíčovým rozdílem mezi nimi je při zvýšení nebo snížení hodnoty probíhá vyhodnocení výrazu.(Další informace naleznete v tématu Přírůstek Příponové operátory a snižovat operátory.) Ve formuláři předponu zvýšení nebo snížení hodnoty probíhá před hodnota je použita vyhodnocení výrazu, takže hodnota výrazu se liší od hodnoty operand.Ve formuláři Příponové zvýšení nebo snížení hodnoty uskuteční po hodnota je použita vyhodnocení výrazu 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 typu nedílnou nebo plovoucí je celočíselná hodnota 1 přírůstkovými nebo snížena.Typ výsledku je stejné jako typ operandu.Operand typu ukazatel je přírůstkovými nebo snížena velikost objektu, který řeší.Přírůstkovými ukazatel odkazuje na další objekt snížena ukazatel odkazuje na předchozí objekt.

Protože přírůstek a snižovat hospodářské subjekty mají vedlejší účinky použití výrazů s operátory zvýšení nebo snížení hodnoty v makra preprocesoru může mít nežádoucí výsledky.Vezměme si jako příklad:

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

Makro se rozšíří na:

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

Pokud i je větší než nebo rovno j nebo menší než j 1, se zvýší dvakrát.

[!POZNÁMKA]

Vložené funkce jazyka C++ jsou makra v mnoha případech výhodnější, protože odstraňují vedlejší účinky, jako je například zde popsané a povolit jazyk provést podrobnější kontrola typu.

Viz také

Referenční dokumentace

Výrazy s unární operátory

Operátory C++

Přednost a asociativita operátorů

Koncepty

Předpona přírůstek a snižovat operátory