Operatori

Le espressioni che useremo per i nostri comandi sono composte da numeri, costanti, variabili ed operatori. Di costanti e variabili abbiamo già parlato, ci resta da classificare gli operatori che nel linguaggio C non sono certamente pochi.

Una prima classificazione, ci permette di dividere gli operatori del C nelle seguenti 6 categorie:

Queste le tabelle descrittive degli operatori in C:

Operatori primari
Operatore Esempio Risultato
[] x[y] array x di y elementi
() x() chiamata alla funzione x
. x.y riferimento a y di x
-> x->y riferimento a y di x (per puntatore)

Operatori unari
Operatore Esempio Risultato
* *x puntatore all'oggetto all'indirizzo x
& &x indirizzo della variabile x
- -x negativo di x
~ ~x complemento a 1 di x
++ (prefisso) ++x pre-incremento di x
++ (postfisso) x++ post-incremento di x
-- (prefisso) --x pre-decremento di x
-- (postfisso) x-- post-decremento di x
sizeof sizeof(x) numero di byte di x
(tipo) (t)x conversione di x in tipo t
! !x NOT logico su x (produce 0 o 1)

Operatori binari
Operatore Esempio Risultato
= x = y y assegnato a x
+ x + y x più y
- x - y x meno y
* x * y x volte y
/ x / y x diviso y
% x % y resto di x/y (x modulo y)
> x > y 1 se x superiore a y; altrimenti 0
< x < y 1 se x inferiore a y; altrimenti 0
>= x >= y 1 se x superiore o uguale a y; altr. 0
<= x <= y 1 se x inferiore o uguale a y; altr. 0
== x == y 1 se x uguale a y; altrimenti 0
!= x != y 1 se x diverso da y; altrimenti 0
&& x && y AND logico tra x e y (produce 0 o 1)
|| x || y OR logico tra x e y (produce 0 o 1)
>> x >> y x shiftato a destra di y bit
<< x << y x shiftato a sinistra di y bit
& x & y AND sul bit tra x e y
| x | y OR sul bit tra x e y
^ x ^ y XOR (OR esclusivo) sul bit tra x e y
, e1, e2 e2 (e1 valutata prima)

Operatori ternari.
Operatore Esempio Risultato
? : x:e1?e2 espressione e1 se x diverso da zero, espressione e2 se x uguale a zero

Gli operatori, naturalmente, sottostanno a precise regole di priorità e di associatività. La seguente tavola presenta queste regole, il valore minore sulla colonna precedenza costituisce il livello maggiore.

Tavola della precedenza ed associatività degli operatori
Precedenza Categoria Operatori Associatività
1 Primari () [] -> . sinistra-destra
2 Unari ! ~ ++ -- * & destra-sinistra
2 Unari (tipo)sizeof destra-sinistra
3 Binari * / % sinistra-destra
4 Binari + - sinistra-destra
5 Binari >> << sinistra-destra
6 Binari < <= > >= sinistra-destra
7 Binari == != sinistra-destra
8 Binari & sinistra-destra
9 Binari ^ sinistra-destra
10 Binari | sinistra-destra
11 Binari && sinistra-destra
12 Binari || sinistra-destra
13 Condizionali ?: destra-sinistra
14 Assegnazione = destra-sinistra
15 Virgola , sinistra-destra

L'applicazione degli operatori elencati nelle espressioni e l'esercizio aiutano non poco a interpretare le precedenti tabelle che, per il momento, si pongono come una mera elencazione degli operatori e delle loro caratteristiche.

Scrivi email per il tutor dei corsi
Scrivi email per l'amministratore del sito
Torna all'indice del modulo

Ultima modifica: