Antes de que bool
se convirtiese en parte del
Estándar C++, todos tendían a utilizar diferentes técnicas para
producir comportamientos similares a los booleanos. Esto produjo
problemas de portabilidad y podían acarrear errores sutiles.
El tipo bool
del Estándar C++ puede tener dos
estados expresados por las constantes predefinidas true
(lo que lo convierte en el entero 1) y false
(lo que lo
convierte en el entero 0). Estos tres nombres son palabras
reservadas. Además, algunos elementos del lenguaje han sido
adaptados:
Elemento | Uso con booleanos |
---|---|
&& || ! |
Toman argumentos booleanos y producen valores
bool
|
< > <= >= == != |
Producen resultados bool
|
if , for , while , do
|
Las expresiones condicionales se convierten en
valores bool
|
?: |
El primer operando se convierte a un valor
bool
|
Tabla 3.1. Expresiones que utilizan booleanos
Como hay mucho código existente que utiliza un int
para representar una bandera, el compilador lo convertirá
implícitamente de int
a bool
(los
valores diferentes de cero producirán true
, mientras
que los valores cero, producirán false
). Idealmente, el
compilador le dará un aviso como una sugerencia para corregir la
situación.
Un modismo que se considera «estilo de programación
pobre» es el uso de ++
para asignar a una
bandera el valor true
. Esto aún se permite, pero está
obsoleto, lo que implica que en el futuro será ilegal. El
problema es que se está haciendo una conversión implícita de un
bool
a un int
, incrementando el valor
(quizá más allá del rango de valores booleanos cero y uno), y
luego implícitamente convirtiéndolo otra vez a
bool
.
Los punteros (que se describen más adelante en este capitulo)
también se convierten automáticamente a bool
cuando
es necesario.