il tipo bool è presente anche nel c con le stesse caratteristiche del c++.
Il tipo _Bool è stato creato per aumentare la stabilità e portabilità del codice.
In primis ora si può scrivere codice quale:
if ( true == var )
mentre prima non si poteva, o meglio non era uno standard e perciò quel frammento di codice non era sicuro e perciò bisognava scrivere
if ( true == !(!var) )
Lo standard prevede anche che la dimensione di tale tipo sia di un bit, questo è una grande caratteristica ad esempio per essere usato per i flags.
Infatti essendo o 0 o 1 si ha la certezza che
flags = bool_activate << 1;
funzioni sempre.
Non solo, ma il compilatore potrebbe ottimizzare una struttura unendo più bool in un unico byte
struct a{
bool a;
bool b;
}
su architetture a 8 bit potrebbe avere dimensioni di solo un byte anziché 2 e in una a 32 bit un 4 byte anziché 8.Questo però dipende dal compilatore che si sta usando.