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.
In sintesi
Argomenti: concetti principali, riepilogo, competenze
- Originariamente in C (C89) non esisteva il tipo booleano: 0 rappresentava Falso e qualsiasi valore diverso da 0 rappresentava Vero.
- Dallo standard C99 è stato introdotto il tipo nativo _Bool e la libreria standard <stdbool.h>.
- Con <stdbool.h> è possibile utilizzare le parole chiave bool, true (1) e false (0).
- Distinguere l'approccio storico (int 0/1) da quello moderno (<stdbool.h>).
- Includere la libreria stdbool.h per dichiarare variabili di tipo bool.
- Stampare variabili booleane tramite lo specificatore %d (output 1 o 0).
- Applicare i booleani nelle istruzioni condizionali (if/else).