Логический тип в C++
В языке С++ для логических значений существует специальный тип — bool.
Допустимыми значениями этого типа являются только true и false, при этом других значений у переменной данного типа быть не может.
Переменная типа bool занимает в памяти ровно 1 байт.
bool b;
cout << sizeof(b); //выведет 1
Допустимые операции
С логическими переменными можно осуществлять логические операции:
~x — логическое отрицание (НЕ)
x & y — логическое умножение (И)
x | y — логические сложение (ИЛИ)
Для типа bool стираются различия между операторами && и & , а также между || и | .
Совместимость с типом int
Тип bool совместим с типом int по присваиванию в обе стороны.
При этом true переходит в 1, false — в 0.
При обратном приведении любое число, не равное нулю — переходит в true, 0 — в false.
Если использовать bool в арифметическом выражении, то оно будет переведено в int: bool + bool = int.
Надо понимать, что в С++ логический и целочисленный тип — это разные типы , поэтому по типу аргумента int и bool возможна перегрузка функций.