Tabella degli Operatori in C++ e loro Precedenza

Riportiamo qui la lista completa di tutti gli operatori in C++ con la loro precedenza e associatività.

Operatori in C++ e loro Precedenza

Come leggere la tabella:

  • La colonna "Associatività" indica se l'operatore è associativo a sinistra (S) o a destra (D). Gli operatori con associatività a sinistra raggruppano da sinistra a destra.

    Ad esempio, l'operatore di sottrazione - è associativo a sinistra, quindi l'espressione a - b - c è interpretata come (a - b) - c. Gli operatori con associatività a destra raggruppano da destra a sinistra. Ad esempio, l'operatore di assegnamento = è associativo a destra, quindi l'espressione a = b = c è interpretata come a = (b = c).

  • La colonna "Precedenza" indica la precedenza dell'operatore. Un numero più alto indica una precedenza più alta.

    Ad esempio, gli operatori con precedenza 3 hanno una precedenza più alta degli operatori con precedenza 2.

    Gli operatori con la stessa precedenza vengono valutati in base alla loro associatività. Ad esempio, nell'espressione a + b - c, gli operatori + e - hanno la stessa precedenza, quindi vengono valutati da sinistra a destra: (a + b) - c.

Associatività Operatore Funzione Uso Precedenza
S :: ambito globale ::nome 19
S :: ambito di classe classe::nome 19
S :: ambito di namespace namespace::nome 19
S . selettori di membro oggetto.membro 18
S -> selettori di membro puntatore->membro 18
S [] indice expr[expr] 18
S () chiamata di funzione nome(lista_expr) 18
S () costruzione di tipo tipo(lista_expr) 18
D ++ incremento postfisso lvalue++ 17
D -- decremento postfisso lvalue-- 17
D typeid ID di tipo typeid(tipo) 17
D typeid ID di tipo a runtime typeid(expr) 17
D cast esplicito conversione di tipo nome_cast<tipo>(expr) 17
D ++ incremento prefisso ++lvalue 16
D -- decremento prefisso --lvalue 16
D ~ NOT bit a bit ~expr 16
D ! NOT logico !expr 16
D - meno unario -expr 16
D + più unario +expr 16
D * dereferenziazione *expr 16
D & indirizzo di &lvalue 16
D () conversione di tipo (tipo) expr 16
D sizeof dimensione dell'oggetto sizeof expr 16
D sizeof dimensione del tipo sizeof(tipo) 16
D sizeof dimensione del parameter pack sizeof(nome) 16
D new alloca oggetto new tipo 16
D new[] alloca array new tipo[dimensione] 16
D delete dealloca oggetto delete expr 16
D delete[] dealloca array delete[] expr 16
D noexcept può expr lanciare noexcept(expr) 16
S ->* selezione puntatore a membro ptr->*ptr_a_membro 15
S .* selezione puntatore a membro ogg.*ptr_a_membro 15
S * moltiplica expr * expr 14
S / dividi expr / expr 14
S % modulo (resto) expr % expr 14
S + addizione expr + expr 13
S - sottrazione expr - expr 13
S << shift bit a bit a sinistra expr << expr 12
S >> shift bit a bit a destra expr >> expr 12
S < minore di expr < expr 11
S <= minore o uguale expr <= expr 11
S > maggiore di expr > expr 11
S >= maggiore o uguale expr >= expr 11
S == uguaglianza expr == expr 10
S != disuguaglianza expr != expr 10
S & AND bit a bit expr & expr 9
S ^ XOD bit a bit expr ^ expr 8
S | OD bit a bit expr | expr 7
S && AND logico expr && expr 6
S || OD logico expr || expr 5
D ?: condizionale expr ? expr : expr 4
D = assegnamento lvalue = expr 3
D *=, /=, %=, +=, -= assegnamento composto lvalue += expr, ecc. 3
D <<=, >>= assegnamento composto lvalue <<= expr, ecc. 3
D &=, |=, ^= assegnamento composto lvalue &= expr, ecc. 3
D throw lancia eccezione throw expr 2
S , virgola expr, expr 1
Tabella 1: Tabella degli Operatori C++ con loro priorità e associatività