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