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.