3.7. Тип bool

3.7. Тип 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, мы нашли слово ";

else cout "нет, наше слово не встретилось. ";

Хотя 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