Quando in un’espressione compaiono più operatori il compilatore deve decidere sul loro livello di priorità e sulla loro associatività per tradurre correttamente in linguaggio macchina.
Operatori | Categoria |
---|---|
[] . () ++ — |
postfissi |
++ — + – ~ ! |
unari |
new () | creazione e casting |
* / % | moltiplicativi |
+ – | additivi |
<< >> >>> | di shift |
< <= >= > istanceof |
condizionali |
== != | di uguaglianza |
& | AND |
^ | XOR |
| | OR |
&& | AND |
|| | OR |
? : | ternario |
= += -= *= /= %= &= ^= |= <<= >>= >>>= |
di assegnamento |
Alcune regole pratiche
- l’assegnamento avviene solo dopo che tutte le operazioni sono state elaborate…
- gli operatori unari e funzionali precedono gli operatori binari e l’operatore ternario
- gli operatori moltiplicativi precedono gli operatori additivi
- gli operatori aritmetici precedono gli operatori condizionali, logici e relazionali (a differenza dei linguaggi non C…..)
- a parità di precedenza vale l’associatività a sinistra… (tranne che per l’assegnamento)
- le parentesi tonde forzano l’ordine di valutazione
- … e permettono di scrivere espressioni corrette.