Obsah

Inkrementace, dekrementace

Inkrementace ++ a dekrementace - - jsou operátory, které zvětší, resp. sníží hodnotu proměnné o hodnotu 1. Velmi se používají například v cyklech for.

Můžeme je nahradit standardním operátorem přiřazení. Příkaz x++; je ekvivalentní příkazu x = x + 1;.

Příklad

int cislo = 41;
cislo++;
printf("%d\n", cislo);
cislo--;
printf("%d\n", cislo);

Výstupem tohoto kódu bude:

42
41

Prefixová a postfixová syntaxe

Oba tyto operátory se dají použít jak v prefixové formě: ++n;, tak i v postfixové formě: n++. Rozdíl těchto dvou syntaxí je okamžik, kdy dojde k přičtění/odečtění jedničky.

Prefixová syntaxe změní hodnotu referované proměnné před vyhodnocením výrazu. Postfixová syntaxe změní hodnotu referované proměnné po vyhodnocení výrazu.

Příklad prefix vs postfix

int x = 41;
printf("%d\n", ++x);
if (x-- == 42)
  puts("Foo");

Výstupem tohoto kódu bude:

42
Foo

Protože hodnota 41 je inkrementována předtím, než je vypsána. A v příkazu if je její hodnota zmenšena až po vyhodnocení podmínky.

Limitace použití těchto operátorů

Funkce těchto operátorů je v C/C++ značně omezená a snadno můžeme dosáhnout nedefinovaného chování, které někdy nebude kompilátorem vyhodnoceno jako chybné, ale výsledek se může na jiném systému značně lišit. Proto dbáme na to, ať používáme jen jeden operátor inkrementace/dekrementace v rámci jednoho výrazu

Několik příkladů nesprávného použití

Odkazy