Логические значения
У каждого сравнения есть ответ: да или нет. В C++ эти ответы — значения true и false. Их называют логическими значениями в честь математика Джорджа Буля, а их тип данных вы уже знаете из урока о переменных: bool. Поэтому результат сравнения можно сохранить в переменной, вывести и использовать как условие:
int age = 20;
bool isAdult = age >= 18;
std::cout << "Совершеннолетний: " << isAdult << std::endl;
if (isAdult) {
std::cout << "Можно голосовать" << std::endl;
}Программа выведет:
Совершеннолетний: 1
Можно голосоватьВторую строку кода читайте справа налево: сначала программа сравнивает age >= 18, получает true, и только потом = записывает это значение в isAdult. Как вы уже знаете, std::cout выводит true как 1, а false как 0. Условие if (isAdult) означает то же, что и if (isAdult == true). Оно просто короче, поэтому программисты пишут именно так.
Названия логических переменных обычно начинаются с is или has (isAdult, hasTicket), чтобы читаться как вопрос, на который отвечают «да» или «нет».
Логическая переменная пригодится, например, для чётных чисел. Число чётное, когда при делении на два ничего не остаётся, то есть когда остаток number % 2 равен 0:
int number = 14;
bool isEven = number % 2 == 0;
std::cout << "Чётное: " << isEven << std::endl;Программа выведет:
Чётное: 1Сначала программа вычисляет остаток 14 % 2, он равен 0, и только потом сравнивает его с нулём: % выполняется раньше ==, как умножение раньше сложения. У нечётного числа, например 7, остаток равен 1, и isEven будет false. Если бы вы по ошибке написали здесь один знак равенства, number % 2 = 0, компилятор сообщил бы error: expression is not assignable, потому что нельзя ничего записать в результат вычисления. Здесь компилятор замечает путаницу между = и ==, в отличие от if (points = 10) в предыдущем упражнении.
Задание
- 1
Создайте переменную
isEvenтипаbool, в которой будет результат сравненияnumber % 2 == 0, и выведите её:std::cout << "Чётное: " << isEven << std::endl;. Число 7 нечётное, поэтому программа выведетЧётное: 0. - 2
Под этой строкой напишите инструкцию
ifс условиемisEven, которая выводитЧисло чётное, и добавьте к ней веткуelse, которая выводитЧисло нечётное. Программа выведет:Число: 7 Чётное: 0 Число нечётное