C Precedenza e associatività degli operatori: definizione ed esempi

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 * 6viene 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 == 2viene 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.

Articoli interessanti...