Il Tipo Booleano nel Linguaggio C
Argomenti: evoluzione da C89 a C99, libreria <stdbool.h>, tipo bool, costanti true e false, valutazione di verità
I valori booleani (Vero e Falso) sono alla base della logica di controllo nei programmi. Tuttavia, il linguaggio C ha una storia particolare: originariamente non possedeva un tipo di dato booleano dedicato, introducendolo ufficialmente solo a partire dallo standard C99.
1. L'Evoluzione dei Booleani in C
Confronto: Dal C Classico (C89) al C Moderno (C99 e successivi)
C Classico (C89 / C90)
Non esisteva alcun tipo booleano nativo. Si utilizzavano direttamente i numeri interi (int):
0rappresenta Falso (False).- Qualsiasi valore diverso da 0 (1, -5, 100) rappresenta Vero (True).
C Moderno (C99 e successivi)
È stato introdotto il tipo nativo _Bool e l'header standard <stdbool.h>, che mette a disposizione:
- Il tipo di dato
bool. - Le costanti
true(valore 1) efalse(valore 0).
2. Utilizzo Pratico con <stdbool.h>
Sintassi Standard: Includere l'header e gestire variabili booleane
| 1 | #include <stdio.h> |
| 2 | #include <stdbool.h> // Abilita bool, true e false |
| 3 | |
| 4 | int main(void) { |
| 5 | // Dichiarazione ed inizializzazione |
| 6 | bool eMaggiorenne = true; |
| 7 | bool haPatente = false; |
| 8 | |
| 9 | if (eMaggiorenne && !haPatente) { |
| 10 | printf("Puoi fare l'esame per la patente! "); |
| 11 | } |
| 12 | |
| 13 | // Stampa numerica del valore booleano |
| 14 | printf("eMaggiorenne vale: %d ", eMaggiorenne); // Stampa 1 |
| 15 | printf("haPatente vale: %d ", haPatente); // Stampa 0 |
| 16 | |
| 17 | return 0; |
| 18 | } |
- Libreria obbligatoria (riga 2): Senza
#include <stdbool.h>il compilatore non riconoscerà la parola chiavebool. - Valori interni: Sotto il cofano,
trueè semplicemente una costante pari a 1 efalseè pari a 0. - Specificatore di stampa (righe 14-15): Per stampare un booleano con
printfsi usa%d(intero decimal), che mostrerà1o0. - Operatori logici (riga 9): Si usano con gli operatori standard (
&&AND,||OR,!NOT).
Osservazione: Come valuta il C le condizioni?
Anche lavorando con <stdbool.h>, la regola fondamentale del C rimane invariata: all'interno di un'istruzione condizionale (es. if (condizione)), qualsiasi espressione che restituisce un valore diverso da zero viene sempre interpretata come Vero, mentre soltanto lo zero viene interpretato come Falso.