Operatori Aritmetici e Relazionali
Operatori Aritmetici
Section titled “Operatori Aritmetici”I classici operatori moltiplicativi (*, /, %) e additivi (+, -) si comportano in modo simile all’algebra tradizionale, ma con alcune peculiarità in C.
Divisione Troncata e Modulo
Section titled “Divisione Troncata e Modulo”Quando dividi due interi, il C esegue una “divisione troncata verso lo zero”, scartando i decimali (la parte frazionaria viene troncata).
int a = 10 / 3; // a = 3int b = -10 / 3; // b = -3L’operatore modulo (%) restituisce il resto della divisione intera. In C, il segno del risultato del modulo è sempre uguale a quello del dividendo (il numero a sinistra):
int x = 10 % 3; // x = 1int y = -10 % 3; // y = -1Operatori Relazionali (Confronti)
Section titled “Operatori Relazionali (Confronti)”Gli operatori di disuguaglianza (<, <=, >, >=) e di uguaglianza (==, !=) restituiscono sempre un intero: 1 se vero, 0 se falso.
La trappola del confronto concatenato
Section titled “La trappola del confronto concatenato”In matematica, per verificare se un numero è compreso tra due estremi si scrive 0 < a < 10. In C, scrivere questo è un errore logico gravissimo.
Gli operatori si raggruppano da sinistra a destra. L’espressione 0 < a < 10 viene valutata come (0 < a) < 10.
- Se
aè 5,0 < 5è vero, quindi restituisce1. Poi il C calcola1 < 10, che è vero. - Ma se
aè 50!0 < 50è vero, quindi restituisce1. Poi il C calcola1 < 10… che è ancora vero!
Per combinare i confronti, devi sempre usare gli operatori logici.
💻 Esercizio Pratico
Section titled “💻 Esercizio Pratico”Il codice seguente ha un bug! Tenta di verificare se b è strettamente compreso tra a e c, ma usa la sintassi errata a < b < c.
Correggilo separando le condizioni con un AND logico (&&). L’espressione corretta è: “Se a è minore di b E b è minore di c”.