Целые переменные как логические в С++

Логический тип bool не всегда был в С++. В начале своего пути разработчик С++ не заморачивался с выделением отдельного типа данных для логических значений, и для этого использовался тип int. При этом значение 0 рассматривалось как false, а всё остальное - как true.

Потом тип bool всё-таки появился. Ну хотя бы для того, чтобы программистам на других языках было более приятно переходить на С++ ))) Но не только для этого, разумеется. Например, в таком коде:

x = 1;
z = 1;

как вы поймёте, где логическая переменная, а где числовая? Да никак. Поэтому вы всегда должны это помнить. А зачем? Ведь намного понятнее, если это этот код будет таким:

x = 1;
z = true;

Так что введение типа bool - это не простой каприз. Это делает код более читабельным и понятным, а также избавляет в некоторых случаях от необходимости писать комментарии.

При этом язык С++ сохранил высокую совместимость типов bool и int. И здесь можно, например, сделать так:

int x = 1;
bool z = true;
x = 1;
z = true;
x = x + z;

Этот код скомпилируется и отработает без каких-либо неожиданностей. В С++ это допустимо. А вот Паскаль вам этого никогда не простит. И ваша попытка завершится ошибкой компиляции:

Логический тип bool не всегда был в С++. В начале своего пути разработчик С++ не заморачивался с выделением отдельного типа данных для логических значений, и для этого использовался тип int.

Ну может оно и к лучшему )))

В С++ же осталась такая высокая совместимость между bool и int, чтобы обеспечить совместимость со старыми программами без переписывания кода. Более того, если вы попробуете вывести на экран значение типа bool, то по умолчанию будет выведено именно числовое представление (0 или 1). Если же вы хотите вывести именно слова false или true, то придётся прибегнуть к некоторым ухищрениям.

На этом всё. Подписывайтесь на канал, чтобы ничего не пропустить.