Home
Accesso / Registrazione
 di 

Programmare in C - Precedenza fra gli operatori

Guida C

Il C contiene molti operatori, e per via del meccanismo di precedenza fra operatori, le interazioni fra più operatori possono diventare complesse da capire.

X = 5+3*6

X riceve in assegnazione il valore 23 e non il valore 48, perchè in C la moltiplicazione e la divisione hanno una precedenza maggiore rispetto all'addizione e sottrazione.

char *a[10];

invece, che cosa significa? a è un puntatore singolo ad un array di 10 caratteri oppure è un array di 10 puntatori a carattere? Senza conoscere la precedenza fra operatori in C, non vi è modo di scoprilo.

La tabella seguente, tratta da C programming language di Kernighan e Ritchie, illustra la gerarchia di precedenze in C. Man mano che si scende nella tabella gli operatori hanno via via meno importanza.

Operatori Associatività
( [ - . da sinistra a destra
! - ++ -{- + * & (type-cast) sizeof da destra a sinistra
(nella linea precedente, +, - e * sono da considerarsi operatori unari)
* / % da sinistra a destra
+ - da sinistra a destra
<< >> da sinistra a destra
< <= > >= da sinistra a destra
== != da sinistra a destra
& da sinistra a destra
^ da sinistra a destra
| da sinistra a destra
&& da sinistra a destra
|| da sinistra a destra
?: da sinistra a destra
= += -= *= /= %= &= ^= |= <<= >>= da destra a sinistra
, da sinistra a destra
Grazie a questa tabella, si può interpretare char *a[10] come un array di 10 puntatori a carattere. Si consiglia di cercare di comprendere la tabella, ricordandovi che a volte piccoli e grandi bug possono essere dovuti ad un'errata interpretazione (da parte vostra!) della precedenza fra operatori.

 

 

Scrivi un commento all'articolo esprimendo la tua opinione sul tema, chiedendo eventuali spiegazioni e/o approfondimenti e contribuendo allo sviluppo dell'argomento proposto. Verranno accettati solo commenti a tema con l'argomento dell'articolo stesso. Commenti NON a tema dovranno essere necessariamente inseriti nel Forum creando un "nuovo argomento di discussione". Per commentare devi accedere al Blog

 

 

Login   
 Twitter Facebook LinkedIn Youtube Google RSS

Chi è online

Ci sono attualmente 1 utente e 29 visitatori collegati.

Utenti online

Ultimi Commenti