A resposta de Charles Bailey está correta. O texto exato do padrão C ++ é (§4.7 / 4): "Se o tipo de origem for bool, o valor falso é convertido para zero e o valor verdadeiro é convertido para um."
Edit: Vejo que ele adicionou a referência também - irei deletar isso em breve, se não me distrair e esquecer ...
Edit2: Mais uma vez, provavelmente vale a pena notar que, embora os próprios valores booleanos sempre sejam convertidos em zero ou um, várias funções (especialmente da biblioteca padrão C) retornam valores que são "basicamente booleanos", mas representados como int
s que são normalmente só precisa ser zero para indicar falso ou diferente de zero para indicar verdadeiro. Por exemplo, as funções is * <ctype.h>
requerem apenas zero ou diferente de zero, não necessariamente zero ou um.
Se você converter para bool
, zero será convertido em falso e diferente de zero em verdadeiro (como você esperaria).