Los tipos de bool son más pequeños que los tipos Int, por lo tanto, utilizan menos espacio en la memoria. Dependiendo del sistema en el que esté compilando, un Int puede tener de 4 a 8 bytes, mientras que un Bool es de 1 byte (como se puede ver en este artículo de MSDN )
Combine esto con algunos de los aspectos de KISS y el buen diseño del programa, y se hace evidente por qué es mejor usar un bool para almacenar una variable que solo tendrá 2 valores.
¿Por qué complicar más las cosas con un objeto que puede almacenar una amplia gama de valores, cuando está seguro de que solo necesita almacenar 1 de 2 valores diferentes?
¿Qué sucede en el sistema que usa un int, si almacena 75 allí? Si ha agregado condicionales adicionales
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
entonces estás cubierto para esta situación. Pero si no lo has hecho, entonces no lo estás.
También podría tener un caso (dependiendo de cómo esté cambiando el valor de int) donde tiene un desbordamiento de búfer, y el valor "se restablece" de nuevo a 0 o el límite inferior de su int (que podría estar en algún lugar del región de -127 a −9,223,372,036,854,775,808, dependiendo de su arquitectura de destino ) ¿qué sucede en su código entonces?
Sin embargo, si usaste un bool, podrías usar algo como esto:
if(continueBool == true)
return true;
else
return false;
O incluso:
return (continueBool== true) ? true : false;
o incluso:
return continueBool;
Dependiendo de su compilador, puede haber optimizaciones que se puede realizar en el código que utiliza para almacenar Bools asignan valores de verdadero / falso. Considerando que, tal vez no haya optimizaciones que se pueden realizar con Entrs utilizado para almacenar los valores verdadero / falso asignadas.
También debemos recordar que C ++ (junto con C, Assembly y FORTRAN) se usa para escribir código altamente eficiente, pequeño y rápido. Por lo tanto, sería mejor usar un Bool en este caso, especialmente si está marcado por el uso de variables, memoria, caché o tiempo de procesador.
Una pregunta similar sería: ¿por qué almacenaría un entero (valor) en un flotante? Respuesta: No deberías, porque no tiene sentido.
Larga historia corta: como su maestro / tutor / conferenciante / profesor para repasar los tamaños de los diferentes tipos de valor con usted (en caso de que se lo haya perdido) y por qué son importantes en el Desarrollo de software.
Espero que ayude como punto de partida (también espero que no parezca pedante)
int
es almacenar un número entero y el propósito de abool
es almacenar un valor booleano (true
ofalse
). Usar unbool
IMO refleja su uso mucho mejor que usar unint
.