C++
Логическое И в C++: как пишется AND в условии
Логическое «и» в C++ пишется как &&. Его используют в if, while и других условиях, когда должны одновременно выполниться два условия. Например: возраст не меньше 18 и пароль не пустой
Пример:
#include <iostream>
#include <string>
int main() {
int age = 20;
std::string password = "qwerty";
if (age >= 18 && !password.empty()) {
std::cout << "Access allowed\n";
}
}
Оба условия истинны, поэтому сообщение выводится
Чем && отличается от &
&& — логическое И. Оно работает с условиями: true и false
& — битовое И. Оно работает с битами чисел. В обычных проверках новичку почти всегда нужен &&, а не &
Ошибка:
if (age >= 18 & !password.empty()) {
std::cout << "Works, but do not write this here\n";
}
Такой код может скомпилироваться, но смысл другой. Для условий пишите &&
Короткое замыкание
У && есть важное свойство: если первое условие ложное, второе может не выполняться. Это называют коротким замыканием
std::string* name = nullptr;
if (name != nullptr && !name->empty()) {
std::cout << *name << '\n';
}
Если name == nullptr, вторая часть не выполнится, и программа не полезет в пустой указатель. Если поставить &, такой защиты не будет
Можно ли писать and
В C++ есть альтернативное написание and, но в обычном коде чаще используют &&:
if (age >= 18 and !password.empty()) {
std::cout << "ok\n";
}
Это допустимо, но для новичка лучше привыкать к &&, потому что так пишут чаще в примерах, документации и коде команд
Несколько условий
Можно объединять больше двух условий:
if (age >= 18 && !password.empty() && password.size() >= 8) {
std::cout << "Password accepted\n";
}
Если условие стало длинным, вынесите части в переменные:
bool isAdult = age >= 18;
bool hasPassword = !password.empty();
bool passwordLongEnough = password.size() >= 8;
if (isAdult && hasPassword && passwordLongEnough) {
std::cout << "ok\n";
}
Так код легче читать
Пример с диапазоном
Частый сценарий — проверить, что число попадает в диапазон:
int x = 50;
if (x >= 10 && x <= 100) {
std::cout << "inside range\n";
}
Здесь важно использовать &&, а не математическую запись 10 <= x <= 100. В C++ такая цепочка не работает так, как в математике. Выражение нужно разбить на две отдельные проверки
Приоритет операторов
Если условие смешивает && и ||, добавляйте скобки:
if ((isAdmin || isManager) && isActive) {
std::cout << "allowed\n";
}
Скобки не всегда обязательны для компилятора, но они делают намерение очевидным для человека
Если сомневаетесь, разбивайте сложное условие на несколько bool переменных. Это не слабость, а нормальный способ сделать код проверяемым
Такой стиль особенно помогает в учебных задачах: проще вывести каждую переменную отдельно и понять, какая часть условия дала false
Частые ошибки
Первая ошибка — писать один & вместо &&. Вторая — путать && и ||: первое требует оба условия, второе требует хотя бы одно. Третья — забывать скобки в сложных выражениях. Четвертая — писать слишком длинное условие в одну строку
Мини-задача: проверьте число x. Оно должно быть больше 10 и меньше 100. Выведите ok, только если оба условия выполнены
Что почитать дальше по C++
Что почитать дальше по C++
Если нужен общий маршрут по теме, откройте рубрику C++. Для соседних задач пригодятся эти разборы:
- C++ с нуля: первый файл, переменные и вывод
- Enter в C++: перенос строки, std::endl и ввод через cin
- Microsoft Visual C++ 14.0: что это, зачем нужен и как исправить ошибку установки
- Microsoft Visual C++ Runtime Library ошибка: как исправить без скачивания DLL