Логический тип в 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 возможна перегрузка функций.
bool тип данных в языке Си.
В языке Си нет типа данных bool и значений true и false.
В заголовочном файле определены макросы bool, true и false, которые позволяют использовать синтаксис аналогичный языку C++.
#include // prinf() #include // bool, true, false int main() < int counter = 0; bool flag = true; while(flag)< if(counter == 5)< flag = false; >printf("counter = %d, flag = %d \n", counter, flag); counter++; > return 0; >
Значение true = 1, а false = 0. Оператор if выполняется при любом ненулевом значении в скобках оператора.
#include // printf() #include // true, false int main() < printf("true = %d, false = %d \n", true, false); // true = 1, false = 0 if(-1)< // Будет выведено "only 0 == false" printf("only 0 == false \n"); // Любое ненулевое значение это true (срабатывание if) >>
Понравилась страница? Не забудь сохранить и поделиться!
Связанные темы
bool — bool тип данных в языке Си.
char — Тип данных char в языке Си.
double — double тип данных языка Си. Число с плавающей точкой с двойной точностью.
enum — Тип данных enum (или перечисление) в языке Си.
float — float тип данных языка Си.
int — int целочисленный тип данных языка Си.
long — long и long long целочисленные типы данных в языке Си.
short — short тип данных языка Си.
size_t — size_t тип данных языка Си.
struct_ — struct тип данных языка Си.
union — union или объединение — тип данных в языке Си.
_bool — Ключевое слово языка Си _Bool
Тип bool и логические выражения

Сегодня мы узнаем с вами еще об одном типе данных, который есть в C++. И по названию темы вы уже поняли, что речь пойдет о типе bool.
Логические выражения – это та самая тема, которая аккуратно приближает нас к изучению условных операторов. Но пока это очень маленький шажок, который может показаться для кого-то довольно сложным.
Для того чтобы понять, что такое логические выражения, нам придется ввести две – три новых сущности. И первой из них будет новый тип данных.
Тип данных bool
Bool – это сокращение от boolean, по-английски – логический. Происхождение этого слова интересное, был такой человек, как Джордж Буль, который предложил Алгебру логики или Булеву алгебру. Собственно она и стала некой основой в языках программирования. Зная Алгебру логики, вам будет намного проще.
В этом уроке мы рассмотрим с вами некоторые ее базовые аспекты, которые чаще всего используются в программировании.
Кроме этого, особенность типа данных bool заключается в том, что он может принимать всего лишь два значения:
- true – истина;
- false – ложь.
Также можно провести аналогию:
Например, номер этого занятия 3, вы скажете не правда, т.е. false. А если я скажу, что мы изучаем C++, вы со мною согласитесь, т.е. true.
Сколько памяти выделяется под тип bool?
C++ выделяет минимум 1 байт на переменную, поэтому тип bool будет занимать у нас всегда именно эту величину. Вне зависимости от значений (true или false).
Что такое логическое выражение?
Логическое выражение – это некоторая конструкция языка C++, результат вычисления которой будет 1 или 0 (true или false).

Логические выражения состоят из трех частей.
- Под цифрами 1 и 3 скрываются те самые числа, переменные или выражения, которые мы уже привыкли использовать в наших программах.
- Под цифрой два мы понимаем сравнение тех самых первой и третей частей.
Например, 0 больше 1.
Операции сравнения
В языке C++, как и в любом другом си подобном языке 6:
- «>» – Больше;
- « =» – Больше или равно;
- « 60 – ложь (false или 0);
- В данном уроке меньше 1000 символов текста
text_lesson_symbol 0; - Переменная а делится на 5 нацело
a % 5 == 0; - Переменная а – четная
a % 2 == 0; - Переменная а – нечетная
a % 2 != 0;
В каждом примере, мы сравниваем нашу переменную с числовым значением. В результате получаем 0 или 1 (false или true).
Сложные логические выражения

Что подразумевается под сложными выражениями? Это подразумевает в себе, что мы сравниваем уже не просто числа, переменные или арифметические выражения, а несколько логических выражений между собой.
Для чего они нам могут понадобиться?
Проще будет рассказать на примере. Вы заходите в интернет магазин и начинаете поиск товара, объединяя между собой несколько фильтров. Цена товара от 5.000 до 10.000 рублей, цвет белый. В результате вы увидите все товары стоимостью от 5.000 до 10.000 рублей белого цвета.
Это как раз и будет сложное логическое выражение.
((price >= 5000) && (price
Логические операции
- && — логическое «И». Результат истинный, если оба операнда истинны;
- || — логическое «ИЛИ». Результат истинный, если хоть один из операндов истинен;
- ! – логическое «НЕ». Результат всегда противоположен операнду.
Таблица истинности логических выражений

Решение задач
Проверка на четность числа
С клавиатуры вводится целое число n. Требуется проверить, является ли оно чётным или нет.
Формат входных данных
В единственной строке вводится целое число n (∣n∣ 9 ).
Формат выходных данных
Выведите «1», если число является чётным, и «0», если нечётным.

Проверка на нечетность числа
С клавиатуры вводится целое число n. Требуется проверить, является ли оно нечётным или нет.
Формат входных данных
В единственной строке вводится целое число n (∣n∣ 9 ).
Формат выходных данных
Выведите «1», если число является нечётным, и «0», если чётным.

Три нечетных
Даны три числа a, b и c. Требуется проверить, что все три числа являются нечётными.
Формат входных данных
С клавиатуры вводятся три целых числа a, b и c, которые по модулю не превосходят 10 9 .
Формат выходных данных
На экран нужно вывести 1, если все три числа нечётные, и 0, если хотя бы одно из них чётное.

Попадание в прямоугольник

Дана точка с координатами x и y.
Проверьте, находится ли она внутри прямоугольника, который образован точками с координатами (1, 7), (4, 7), (4, 2), (1, 2).
Формат входных данных
Даны два целых числа x и y (−10 Tags
Для чего нужны переменные флаги?
Я только недавно натолкнулся на этот термин, и я не понимаю для чего они нужны.
Я не уверен, когда использовать переменную флаг и как это сделать?
Если можно с примерами на Java. Спасибо.
boolean flag = false;
- Вопрос задан более трёх лет назад
- 11358 просмотров
3 комментария
Простой 3 комментария

gleendo @evgeniy8705
Вы про такие флаги говорите? boolean flag = false; или про JVM?
rraderio @rraderio Автор вопроса

gleendo @evgeniy8705
public boolean has(int key) < // Метод для проверки существования элемента например в списке boolean found = false; // Флаг, найден ли элемент или нет. По умолчанию не найден (false) if (find(key)) found = true; // Ищем элемент. Если находим то выставляем значение флага в true return found; // Возвращаем значение флага >
Решения вопроса 0
Ответы на вопрос 3
senior software developer
не нужно воспринимать флаги как что-то супер-специфическое или суперсложное
это не более чем обычная переменная которая влияет на поток программы
пример из жизни
вы программируете целый день на работе и вечером идете домой
допустим в течении дня может позвонить супруга и попросить зайти вечером в магазин (выставляет флаг ЗАЙТИ_В_МАГАЗИН = True)
в конце дня этот флаг проверяется — если он True — то мы зайдем в магаз, если нет — соответственно не зайдем
нюансы здесь:
— флаг может быть выставлен в ЛЮБОЕ время
— флаг не обязательно выставляете Вы сами!
— Ваша реакция на флаг не обязательно сиюминутная
— перед уходом домой лучше позвонить супруге и уточнить состояние флага 🙂
флаг не обязательно должен быть буленовской переменной, это понятие скорее логическое, например вместо флага ЗАЙТИ_В_МАГАЗИН (при котором не совсем понятно что покупать то) может использоваться более умная конструкция типа ArrayList списокПокупок = <>. Вначале дня список пустой, в течении дня жена вспоминает чтото — и дописывает вещи в спискоПокупок
в конце дня вы просто проверяете — пуст ли список (флага нет) — и тогда идете домой с чистой совестью
если же там есть хоть что-то (флаг поднят) — Вы уже знаете что 1) идти нужно 2) что именно нужно купить
Ответ написан более трёх лет назад
Комментировать
Нравится 4 Комментировать

Программист
Переменные флаги как правило глобальные переменные булевого типа и используется обычно для синхронизации выполнения подпрограмм в разных потоках. Понятие флаг установлен, флаг снят — эквивалентно true и false.