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