Os tipos booleanos são menores que os tipos Int, portanto, usam menos espaço na memória. Dependendo do sistema em que você está compilando, um Int pode ter de 4 a 8 bytes, enquanto um Bool é de 1 byte (como pode ser visto neste artigo do MSDN )
Junte isso a alguns dos aspectos do KISS e ao bom design do programa, e fica óbvio por que é melhor usar um bool para armazenar uma variável que terá apenas dois valores.
Por que complicar demais as coisas com um objeto que pode armazenar uma ampla gama de valores, quando você tem certeza de que só precisa armazenar 1 de 2 valores diferentes?
O que acontece no sistema que usa um int, se você armazenar 75 lá? Se você adicionou condicionais extras
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
ou
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
então você está coberto para esta situação. Mas se você não tiver, então você não é.
Você também pode ter um caso (dependendo de como está alterando o valor do int) em que há uma saturação de buffer e o valor "redefine" de volta para 0 ou o limite inferior do seu int (que pode estar em algum lugar no região de -127 a −9,223,372,036,854,775,808, dependendo da arquitetura de destino ) o que acontece no seu código?
No entanto, se você usasse um bool, poderia usar algo como isto:
if(continueBool == true)
return true;
else
return false;
Ou até:
return (continueBool== true) ? true : false;
ou até:
return continueBool;
Dependendo do seu compilador, pode haver otimizações que ele pode executar no código que usa Bools para armazenar valores true / false mapeados. Enquanto isso, pode não haver otimizações que ele possa executar para o Ints usado para armazenar valores true / false mapeados.
Também devemos lembrar que o C ++ (junto com C, Assembly e FORTRAN) é usado para escrever código altamente eficiente, pequeno e rápido. Portanto, seria melhor usar um Bool neste caso - especialmente se você estiver sendo marcado no uso de variáveis, memória, cache ou tempo do processador.
Uma pergunta semelhante seria: por que eu armazenaria um número inteiro (valor) em um float? Resposta: Você não deveria, porque não faz sentido.
Para encurtar a história: como seu professor / tutor / professor / professor deve examinar com você os tamanhos de diferentes tipos de valores (caso você tenha perdido) e por que eles são importantes no desenvolvimento de software.
Espero que ajude como ponto de partida (também espero que não pareça pedante)
int
é armazenar um número inteiro e o objetivo de umbool
é armazenar um valor booleano (true
oufalse
). Usar umbool
IMO reflete seu uso muito melhor do que usar umint
.