I tipi bool sono più piccoli dei tipi Int, quindi utilizzano meno spazio in memoria. A seconda del sistema su cui stai compilando / per, un Int può contenere da 4 a 8 byte, mentre un valore booleano è 1 byte (come si può vedere in questo articolo MSDN )
Abbinalo ad alcuni aspetti di KISS e alla buona progettazione del programma, e diventa ovvio il motivo per cui è meglio usare un bool per memorizzare una variabile che avrà sempre e solo 2 valori.
Perché complicare eccessivamente le cose con un oggetto in grado di memorizzare una vasta gamma di valori, quando si è sicuri di dover solo memorizzare 1 di 2 valori diversi?
Cosa succede nel sistema che utilizza un int, se ne memorizzi 75? Se hai aggiunto ulteriori condizionali
if (value >= 0 )
return true; //value is greater than 0, thus is true
else
return false; //value is 0 or smaller than 0, thus is false
o
if (value == 0)
return false; //value is greater than 0, thus is true
else if (value == 1)
return true; //value is 0 or smaller than 0, thus is false
allora sei coperto per questa situazione. Ma se non l'hai fatto, allora non lo sei.
Potresti anche avere un caso (a seconda di come stai modificando il valore di int) in cui hai un buffer sovraccarico e il valore "ripristina" su 0 o sul limite inferiore del tuo int (che potrebbe trovarsi da qualche parte nel regione da -127 a -9.223.372.036.854.775.808, a seconda dell'architettura di destinazione ) cosa succede nel tuo codice?
Tuttavia, se hai usato un bool potresti usare qualcosa del genere:
if(continueBool == true)
return true;
else
return false;
O anche:
return (continueBool== true) ? true : false;
o anche:
return continueBool;
A seconda del compilatore, potrebbero esserci delle ottimizzazioni che può eseguire sul codice che utilizza Bools per archiviare valori true / false mappati. Considerando che, potrebbero non esserci ottimizzazioni che può eseguire per Ints utilizzati per memorizzare valori true / false mappati.
Dobbiamo anche ricordare che C ++ (insieme a C, Assembly e FORTRAN) viene utilizzato per scrivere codice altamente efficiente, piccolo e veloce. Quindi, sarebbe meglio usare un Bool in questa istanza, specialmente se si è marcati sull'uso di variabili, memoria, cache o tempo del processore.
Una domanda simile sarebbe: perché dovrei memorizzare un numero intero (valore) in un float? Risposta: non dovresti, perché non ha senso.
Per farla breve: come tuo insegnante / tutor / docente / professore, vai con te sulle dimensioni dei diversi tipi di valore (nel caso in cui tu lo abbia perso) e perché siano importanti nello sviluppo del software.
Spero che aiuti come punto di partenza (spero anche che non si presenti come pedante)
int
è quello di memorizzare un numero intero e lo scopo di abool
è quello di memorizzare un valore booleano (true
ofalse
). L'uso di unbool
IMO riflette il suo uso molto meglio dell'uso di unint
.