Відповідь Чарльза Бейлі правильна. Точне формулювання зі стандарту C ++ є (§4.7 / 4): "Якщо тип джерела - bool, значення false перетворюється в нуль, а значення true перетворюється в одне".
Редагувати: Я бачу, що він також додав посилання - я скоро його видалю, якщо я не відволікаюсь і не забуду ...
Edit2: Знову ж таки, напевно, варто відзначити, що хоча булеві значення завжди перетворюються на нуль або один, ряд функцій (особливо зі стандартної бібліотеки С) повертає значення, які є "в основному булевими", але представлені як int
s, які є зазвичай потрібно лише нуль, щоб вказати помилкове або ненульове, щоб вказати істинне. Наприклад, функції * є <ctype.h>
лише нульовий або ненульовий, не обов'язково нульовий або один.
Якщо ви призначите це bool
, нуль перетвориться на хибне, а ненульове - істинне (як ви очікували).