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'espressionea - 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'espressionea = b = cè interpretata comea = (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
3hanno una precedenza più alta degli operatori con precedenza2.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 |