Преобразования между типами bool и int в C++ допустимы из-за совместимости этих типов по присваиванию в обе стороны. 2
При преобразовании из bool в int значение true переходит в 1, а false — в 0. 23 При обратном преобразовании любое число, не равное нулю, переходит в true, а 0 — в false. 2
Кроме того, если использовать bool в арифметическом выражении, то оно будет переведено в int: bool + bool = int. 2
Важно учитывать, что приведение типов допустимо далеко не во всех ситуациях, и преобразование считается безопасным, если оно не может потенциально привести к потере данных. 5