Тип bool
Объект типа bool может принимать одно из двух значений: true и false. Например:
// инициализация строки
string search_word = get_word();
// инициализация переменной found
bool found = false;
string next_word;
while ( cin >> next_word )
if ( next_word == search_word )
found = true;
// ...
// сокращенная запись: if ( found == true )
if ( found )
cout << "ok, мы нашли слово\n";
else cout << "нет, наше слово не встретилось.\n";
Хотя bool относится к одному из целых типов, он не может быть объявлен как signed, unsigned, short или long, поэтому приведенное определение ошибочно:
// ошибка
short bool found = false;
Объекты типа bool неявно преобразуются в тип int. Значение true превращается в 1, а false – в 0. Например:
bool found = false;
int occurrence_count = 0;
while ( /* mumble */ )
{
found = look_for( /* something */ );
// значение found преобразуется в 0 или 1
occurrence_count += found;
}
Таким же образом значения целых типов и указателей могут быть преобразованы в значения типа bool. При этом 0 интерпретируется как false, а все остальное как true:
// возвращает количество вхождений
extern int find( const string& );
bool found = false;
if ( found = find( "rosebud" ))
// правильно: found == true
// возвращает указатель на элемент
extern int* find( int value );
if ( found = find( 1024 ))
// правильно: found == true