§ 3. Основные алгоритмические конструкции

3.2. Логический тип данных

В языке программирования С++ для работы с условиями определен логический тип данных bool. Величины типа bool могут принимать два значения — false (ложь) и true (истина).

Значения false и true получаются в результате выполнения операций сравнения над числовыми данными. Сравнивать можно константы, переменные, арифметические и логические выражения. Для сравнения используют следующие знаки:

Операция

С++

Равно (=) ==
Не равно (≠) !=
Больше (>)
Меньше (<)
Больше или равно (³) >=
Меньше или равно (≤) <=

Логическое выражение — выражение, принимающее одно из двух значений: true или false. Логические выражения можно присваивать переменным типа bool, а также выводить их значения на экран: будет выведено 0 для значения true или 1 для значения false соответственно (пример 3.2).

В языке С++ любое числовое значение может восприниматься как логическое. При этом значения, равные нулю, считаются ложью, а не равные нулю — истиной.

В С++ допустимы логические выражения следующего вида: bool a = 3 <= x <= 7;. Однако смысл такого выражения не совпадает с математическим. При выполнении программы компилятор сначала проверит истинность условия 3 <= x и заменит его на 0 или 1 в зависимости от того, истинно это условие или нет. Затем произойдет проверка того, что полученное значение меньше либо равно 7. Вне зависимости от истинности первой части условия результат всегда будет истинным, т. к. 0 <= 7 и 1 <= 7. Поэтому значение переменной a всегда будет истинным, и оно не зависит от значения переменной x.

Тип bool назван в честь английского математика и логика Джорджа Буля, занимавшегося вопросами математической логики в XIX в.

Пример 3.2. Примеры логических выражений:

Выражение

Значение

< 7 true
+ 2 == 8 false
abs(-5) > abs(3) true

Значение логического выражения   >= x * x  можно определить, только зная значения переменных x и y. При = 2 и = 10 значение выражения — true. При = 10 и = 2 – false.

Проверим истинность этих выражений в программе:

#include <iostream>

#include <cmath>

using namespace std;

int main()

{

  bool a1 = 3 < 7;

  cout << "a1=" << a1 << endl;

  bool a2 = 2 + 2 * 2 == 8;

  cout << "a2=" << a2 << endl;

  bool a3 = abs(-5) > abs(3);

  cout << "a3=" << a3 << endl;

  double x, y;

  x = 2, y = 10;

  bool a4;

  a4 = y >= x * x;

  cout << "a4=" << a4 << endl;

  x = 10; y = 2;

  a4 = y >= x * x;

  cout << "a4=" << a4 << endl;

  return 0;

}

Результат работы программы:

Команда    cout << boolalpha   позволит вывести на экран значения true и false вместо 1 и 0. Команду достаточно написать один раз перед первым выводом. Если нужно вернуться к выводу 1/0, то используют команду   cout << noboolalpha.