Ответ Чарльза Бейли правильный. Точная формулировка из стандарта C ++ (§4.7 / 4): «Если исходный тип - bool, значение false преобразуется в ноль, а значение true преобразуется в единицу».
Изменить: я вижу, что он тоже добавил ссылку - я скоро удалю это, если я не отвлекусь и не забуду ...
Edit2: Опять же, вероятно, стоит отметить, что, хотя сами логические значения всегда преобразуются в ноль или единицу, ряд функций (особенно из стандартной библиотеки C) возвращают значения, которые являются «в основном логическими», но представлены как int
s, которые являются обычно требуется только ноль, чтобы указать ложь или ненулевое значение, чтобы указать истину. Например, для функций is * в <ctype.h>
требуется только ноль или ненулевое значение, не обязательно ноль или единица.
Если вы бросите это на bool
приведете , ноль преобразуется в ложь, а ненулевое значение - в истину (как и следовало ожидать).