La respuesta de Charles Bailey es correcta. La redacción exacta del estándar C ++ es (§4.7 / 4): "Si el tipo de fuente es bool, el valor falso se convierte a cero y el valor verdadero se convierte en uno".
Editar: Veo que también agregó la referencia; lo eliminaré en breve, si no me distraigo y olvido ...
Edit2: Por otra parte, probablemente valga la pena señalar que, si bien los valores booleanos en sí mismos siempre se convierten en cero o uno, una serie de funciones (especialmente de la biblioteca estándar de C) devuelven valores que son "básicamente booleanos", pero representados como int
s que son normalmente solo se requiere que sea cero para indicar falso o distinto de cero para indicar verdadero. Por ejemplo, las funciones is * en <ctype.h>
solo requieren cero o distinto de cero, no necesariamente cero o uno.
Si lanza eso a bool
, cero se convertirá en falso y lo que no sea de cero en verdadero (como era de esperar).