Логические операторы: и
Иногда одного условия мало. «Если сегодня пятница и теплее 20 °C, я пойду гулять» состоит из двух условий, соединённых словом «и». В C++ это оператор && (два символа & подряд). Читайте его как «и»:
std::string day = "пятница";
int temperature = 25;
if (day == "пятница" && temperature > 20) {
std::cout << "Иду гулять" << std::endl;
}Программа выведет:
Иду гулять&& — это логический оператор: он соединяет два условия в одно. Соединённое условие истинно, только если истинны обе части. Если ложна хотя бы одна из них, ложно и всё условие:
true && true— этоtruetrue && false— этоfalsefalse && true— этоfalsefalse && false— этоfalse
Можно соединять и больше условий подряд: a && b && c истинно, только если истинны все три.
Каждая часть должна быть полным сравнением. «Возраст от 13 до 19» записывается как age >= 13 && age <= 19. Если сократить его, как мы говорим, до age >= 13 && <= 19, компилятор сообщит error: expected expression, потому что не знает, что должно сравниваться с <= 19. Математическая запись 13 <= age <= 19 тоже не работает. Для неё компилятор сообщит error: chained comparison 'X <= Y <= Z' does not behave the same as a mathematical expression: такая цепочка сравнений в C++ значит не то же самое, что в математике.
Задание
- 1
Напишите инструкцию
if, которая выводитДобро пожаловать, только еслиusernameравно"admin"и одновременноpasswordравно"kitten42". Соедините два сравнения с помощью&&. - 2
Добавьте ветку
else, которая выводитНеверное имя пользователя или пароль. Затем попробуйте неверный пароль: изменитеpasswordна"kitten". Достаточно одной ложной части, чтобы ложным стало всё условие, поэтому программа выведетНеверное имя пользователя или пароль.