Precedenza degli operatori in C

La precedenza degli operatori determina il raggruppamento dei termini in un'espressione e decide come viene valutata un'espressione. Alcuni operatori hanno la precedenza maggiore di altri; ad esempio, l'operatore di moltiplicazione ha una precedenza maggiore dell'operatore di addizione.

Ad esempio, x = 7 + 3 * 2; qui, x è assegnato 13, non 20 perché l'operatore * ha una precedenza maggiore di +, quindi viene prima moltiplicato per 3 * 2 e poi somma in 7.

Qui, gli operatori con la precedenza più alta vengono visualizzati nella parte superiore della tabella, quelli con la priorità più bassa in fondo. All'interno di un'espressione, verranno valutati per primi gli operatori con precedenza più alta.

Categoria Operatore Associatività
Postfix () [] ->. ++ - - Da sinistra a destra
Unario + -! ~ ++ - - (tipo) * & sizeof Da destra a sinistra
Moltiplicativo * /% Da sinistra a destra
Additivo + - Da sinistra a destra
Cambio << >> Da sinistra a destra
Relazionale <<=>> = Da sinistra a destra
Uguaglianza ==! = Da sinistra a destra
Bitwise AND & Da sinistra a destra
Bitwise XOR ^ Da sinistra a destra
OR bit per bit | Da sinistra a destra
AND logico && Da sinistra a destra
OR logico || Da sinistra a destra
Condizionale ?: Da destra a sinistra
Incarico = + = - = * = / =% = >> = << = & = ^ = | = Da destra a sinistra
Virgola , Da sinistra a destra

Esempio

Prova il seguente esempio per comprendere la precedenza degli operatori in C -

#include <stdio.h>

main() {

   int a = 20;
   int b = 10;
   int c = 15;
   int d = 5;
   int e;
 
   e = (a + b) * c / d;      // ( 30 * 15 ) / 5
   printf("Value of (a + b) * c / d is : %d\n",  e );

   e = ((a + b) * c) / d;    // (30 * 15 ) / 5
   printf("Value of ((a + b) * c) / d is  : %d\n" ,  e );

   e = (a + b) * (c / d);   // (30) * (15/5)
   printf("Value of (a + b) * (c / d) is  : %d\n",  e );

   e = a + (b * c) / d;     //  20 + (150/5)
   printf("Value of a + (b * c) / d is  : %d\n" ,  e );
  
   return 0;
}

Quando compili ed esegui il programma sopra, produce il seguente risultato:

Value of (a + b) * c / d is : 90
Value of ((a + b) * c) / d is  : 90
Value of (a + b) * (c / d) is  : 90
Value of a + (b * c) / d is  : 50