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++. Для соседних задач пригодятся эти разборы:

Подписаться
Уведомить о
guest
0 комментариев
Старые
Новые Популярные

Настройки cookie

0
Оставьте комментарий! Напишите, что думаете по поводу статьи.x