Sdílet prostřednictvím


Integrované operátory jazyka C++, priorita a asociativita

Jazyk C++ obsahuje všechny operátory jazyka C a přidává několik nových operátorů. Operátory určují vyhodnocení, které má být provedeno na jednom nebo více operandů.

Priorita a asociativita

Priorita operátoru určuje pořadí operací ve výrazech, které obsahují více než jeden operátor. Asociativita operátoru určuje, zda je ve výrazu, který obsahuje více operátorů se stejnou prioritou, operand je seskupený s operandem vlevo nebo operandem vpravo.

Alternativní pravopis

Jazyk C++ určuje alternativní pravopis pro některé operátory. V jazyce C jsou alternativní pravopisy k dispozici jako makra v <hlavičce iso646.h> . V jazyce C++ jsou tyto alternativy klíčová slova a použití iso646.h> nebo ekvivalentní <ciso646 <jazyka> C++ je zastaralé. V jazyce Microsoft C++ je k povolení alternativního pravopisu vyžadována možnost kompilátoru nebo /Za jazyka C++/permissive-.

Priorita operátorů C++ a tabulka asociativity

Přednost a asociativita operátorů v jazyce C++ je uvedena v následující tabulce (od nejvyšší priority k nejnižší). Operátory se stejnou prioritou mají stejnou přednost, pokud pomocí závorek není explicitně vynucen jiný vztah.

Popis operátoru Operátor Alternativa
Priorita skupiny 1, bez asociativity
Rozlišení rozsahu ::
Priorita skupiny 2, asociativita zleva doprava
Výběr člena (objekt nebo ukazatel) . nebo ->
Dolní index pole []
Volání funkce ()
Přírůstek přípony ++
Dekrementace přípony --
Název typu typeid
Převod konstantního typu const_cast
Převod dynamického typu dynamic_cast
Reinterpretovaný převod typu reinterpret_cast
Převod statického typu static_cast
Priorita skupiny 3, asociativita zprava doleva
Velikost objektu nebo typu sizeof
Zvýšení předpony ++
Snížení předpony --
Doplněk ~ compl
Logické ne ! not
Unární negace -
Unární plus +
Adresa &
Dereference *
Vytvoření objektu new
Zničení objektu delete
Obsazení ()
Priorita skupiny 4, asociativita zleva doprava
Ukazatel na člen (objekty nebo ukazatele) .* nebo ->*
Priorita skupiny 5, asociativita zleva doprava
Násobení *
Divize /
Modul %
Priorita skupiny 6, asociativita zleva doprava
Kromě toho +
Odčítání -
Priorita skupiny 7, asociativita zleva doprava
Levý posun <<
Posun doprava >>
Priorita skupiny 8, asociativita zleva doprava
Menší než <
Větší než >
Menší než nebo rovno <=
Větší než nebo rovno >=
Priorita skupiny 9, asociativita zleva doprava
Rovnosti ==
Nerovnost != not_eq
Priorita skupiny 10 zleva doprava
Bitový operátor AND & bitand
Priorita skupiny 11, asociativita zleva doprava
Bitový exkluzivní operátor OR ^ xor
Priorita skupiny 12, asociativita zleva doprava
Bitový inkluzivní OR | bitor
Priorita skupiny 13, asociativita zleva doprava
Logický operátor AND && and
Priorita skupiny 14, asociativita zleva doprava
Logický operátor OR || or
Priorita skupiny 15, asociativita zprava doleva
Podmíněné ? :
Přiřazení =
Přiřazení násobení *=
Přiřazení dělení /=
Přiřazení modulus %=
Přidání přiřazení +=
Přiřazení odčítání -=
Přiřazení posunu doleva <<=
Přiřazení posunu doprava >>=
Bitové přiřazení AND &= and_eq
Bitové inkluzivní PŘIŘAZENÍ OR |= or_eq
Bitové výhradní přiřazení OR ^= xor_eq
throw – výraz throw
Priorita skupiny 16, asociativita zleva doprava
Comma ,

Viz také

Přetížení operátoru