In questo tutorial apprenderete la precedenza e l'associatività degli operatori con l'aiuto di esempi.
Precedenza degli operatori
La precedenza degli operatori determina quale operatore viene eseguito per primo se in un'espressione è presente più di un operatore.
Prendiamo in considerazione un esempio:
int x = 5 - 17* 6;
In C, la precedenza di *
è maggiore di -
e =
. Quindi, 17 * 6
viene valutato per primo. Quindi l'espressione coinvolgente -
viene valutata come la precedenza di -
è maggiore di quella di =
.
Ecco una tabella di precedenza degli operatori da superiore a inferiore. La proprietà dell'associatività verrà discussa a breve.
Tabella di precedenza e associatività degli operatori
Operatore | Significato di operatore | Associatività |
---|---|---|
() () -> . | Chiamata funzionale Riferimento elemento array Selezione indiretta dei membri Selezione diretta dei membri | Da sinistra a destra |
! ~ + - ++ - & * sizeof (tipo) | Negazione logica Bitwise (1 's) complemento unario più unari meno Incremento Decremento risoluzione del riferimento (Indirizzo) di riferimento Pointer restituisce la dimensione di un oggetto Typecast (conversione) | Da destra a sinistra |
* / % | Moltiplica Dividi resto | Da sinistra a destra |
+ - | Binario più (addizione) Binario meno (sottrazione) | Da sinistra a destra |
<< >> | Spostamento a sinistra Spostamento a destra | Da sinistra a destra |
< <= > > = | Minore di Minore o uguale Maggiore di Maggiore o uguale | Da sinistra a destra |
== ! = | Uguale a Non uguale a | Da sinistra a destra |
& | Bitwise AND | Da sinistra a destra |
^ | OR esclusivo bit per bit | Da sinistra a destra |
| | OR bit per bit | Da sinistra a destra |
&& | AND logico | Da sinistra a destra |
|| | OR logico | Da sinistra a destra |
?: | Operatore condizionale | Da destra a sinistra |
= * = / = % = + = - = & = = | = << = >> = | Assegnazione semplice Assegna prodotto Assegna quoziente Assegna resto Assegna somma Assegna differenza Assegna AND bit a bit Assegna XOR bit a bit Assegna OR bit a bit Assegna spostamento sinistro Assegna spostamento destro | Da destra a sinistra |
, | Separatore di espressioni | Da sinistra a destra |
Associatività degli operatori
L'associatività degli operatori determina la direzione in cui viene valutata un'espressione. Per esempio,
b = a;
Qui, il valore di a è assegnato a be non viceversa. È perché l'associatività =
dell'operatore va da destra a sinistra.
Inoltre, se sono presenti due operatori con la stessa precedenza (priorità), l'associatività determina la direzione in cui vengono eseguiti.
Prendiamo in considerazione un esempio:
1 == 2! = 3
Qui, gli operatori ==
e !=
hanno la stessa precedenza. E la loro associatività va da sinistra a destra. Quindi, 1 == 2
viene eseguito per primo.
L'espressione sopra è equivalente a:
(1 == 2)! = 3
Nota: se un'istruzione ha più operatori, è possibile utilizzare le parentesi ()
per rendere il codice più leggibile.