Incremento, Logica e Condizionali
Operatori di Incremento/Decremento
Section titled “Operatori di Incremento/Decremento”Gli operatori ++ (somma 1) e -- (sottrai 1) lavorano modificando la variabile su cui sono applicati. Tuttavia, il modo in cui restituiscono il valore dipende da dove li posizioni:
- Prefisso (
++i): Prima incrementa il valore in memoria, e poi restituisce il nuovo valore calcolato. - Postfisso (
i++): Salva il vecchio valore temporaneamente, incrementa la memoria in background (come side-effect), e restituisce il vecchio valore salvato.
int i = 5;int a = ++i; // i diventa 6, a vale 6int j = 5;int b = j++; // j diventa 6, ma b vale 5!Operatori Logici e “Short-Circuiting”
Section titled “Operatori Logici e “Short-Circuiting””L’AND logico (&&) e l’OR logico (||) servono a combinare condizioni. A differenza di quasi tutti gli altri operatori in C, l’ordine di valutazione di && e || è rigorosamente da sinistra a destra. Esiste sempre un sequence point dopo la valutazione dell’operando sinistro.
Inoltre, introducono una tecnica chiamata Short-Circuiting (Corto-Circuito): se il C può dedurre il risultato finale valutando solo la prima parte dell’espressione, la seconda parte non viene mai eseguita.
// Se ptr è NULL (cioè 0), la prima condizione è Falsa.// Poiché è un AND (&&), tutta l'espressione sarà Falsa a prescindere dal resto.// Il C ignora la seconda parte, prevenendo un crash (dereferenziare un puntatore nullo).if (ptr != NULL && *ptr == 10) { ... }Operatore Condizionale (Ternario)
Section titled “Operatore Condizionale (Ternario)”È l’unico operatore in C che prende tre operandi (? :). Funziona come un if-else compatto che restituisce un valore.
// Sintassi: condizione ? espressione_se_vero : espressione_se_falso;int max = (a > b) ? a : b;💻 Esercizio Pratico
Section titled “💻 Esercizio Pratico”Sperimenta lo Short-Circuiting. Nel codice sottostante, la seconda funzione non dovrebbe mai essere chiamata, a patto di sistemare correttamente l’espressione logica nel blocco if.
Modifica il codice per far stampare solo “Controllo Primo” (e non far mai scattare “Controllo Secondo”), assicurandoti che l’intero if valuti come vero solo se appropriato, o semplicemente sfrutta la logica di short-circuit ||.