bool - это тип данных, переменные которого принимают два значения- true и false и реализованный однобайтными (восьмибитовыми) переменными. А так как в С++ есть достаточно строгая проверка типов, но не существует строгой типизации, то переменные этого типа можно заменять переменными целого типа, которые всё равно приводятся к однобайтному числовому виду со значениями 0 и 1 в случаях false и true соответственно. В языке Pascal такая конвертация невозможна, а в С++ вполне допустимо в случае необходимости писать следующее:
bool a; int b = 25; a = b%2;
cout << ((a) ? "odd" : "even") << endl;
Или можно сделать такую логическую функцию проверки числа на чётность:
bool even_or_odd(long x) { return x & 1; }
На примере этой функции отчётливо проявляется отсутствие в С++ строгой типизации.
Хранить большие логические данные в массивах типа bool -не очень хорошая идея, потому что при этом тратится в восемь раз больше памяти по сравнению с логическими данными, упакованными в битовые структуры.