C++

If else в C++: можно ли использовать только else

В C++ нельзя использовать else само по себе. else всегда относится к оператору if. Оно означает: выполнить этот блок, если условие в if оказалось ложным

Правильно:

if (age >= 18) {
    std::cout << "Доступ разрешен\n";
} else {
    std::cout << "Доступ запрещен\n";
}

Неправильно:

else {
    std::cout << "Так писать нельзя\n";
}

Компилятор выдаст ошибку, потому что else не знает, к какому if оно относится

Почему else не имеет условия

else — это ветка «во всех остальных случаях». Условие пишется в if, а else срабатывает, когда это условие не выполнено

int temperature = 15;

if (temperature > 20) {
    std::cout << "Тепло\n";
} else {
    std::cout << "Не тепло\n";
}

Если temperature > 20 истинно, выполнится первый блок. Если ложно, выполнится else

Если нужно проверить другое условие

Тогда используйте else if:

if (score >= 90) {
    std::cout << "Отлично\n";
} else if (score >= 70) {
    std::cout << "Хорошо\n";
} else if (score >= 50) {
    std::cout << "Удовлетворительно\n";
} else {
    std::cout << "Нужно повторить тему\n";
}

Здесь else в конце означает: если ни одно условие выше не подошло

Можно ли сделать пустой if и только else

Технически можно написать так:

if (isReady) {
    // ничего не делаем
} else {
    start();
}

Но это плохой стиль. Лучше инвертировать условие:

if (!isReady) {
    start();
}

Код стал короче и понятнее: если не готово, запускаем

Когда нужен switch и default

Если вы хотите ветку «по умолчанию», но проверяете не одно логическое условие, а несколько значений, может подойти switch

switch (command) {
    case 1:
        std::cout << "Открыть\n";
        break;
    case 2:
        std::cout << "Сохранить\n";
        break;
    default:
        std::cout << "Неизвестная команда\n";
        break;
}

default похож по смыслу на else: он срабатывает, если ни один case не подошел. Но default используется внутри switch, а не вместо else в любом месте программы

К какому if относится else

Если рядом несколько if, else относится к ближайшему незакрытому if

if (a > 0)
    if (b > 0)
        std::cout << "a и b положительные\n";
    else
        std::cout << "b не положительное\n";

Здесь else относится к if (b > 0), а не к if (a > 0). Чтобы избежать путаницы, лучше всегда использовать фигурные скобки:

if (a > 0) {
    if (b > 0) {
        std::cout << "a и b положительные\n";
    } else {
        std::cout << "b не положительное\n";
    }
}

Частые ошибки

Писать else без if

Так нельзя по синтаксису языка. Перед else должен быть соответствующий if

Ставить точку с запятой после if

Проблемный код:

if (x > 0);
else {
    std::cout << "x <= 0\n";
}

Точка с запятой завершает if, и код ломается. Пишите без нее:

if (x > 0) {
    std::cout << "x > 0\n";
} else {
    std::cout << "x <= 0\n";
}

Заменять else пустым блоком

Если нужна только отрицательная проверка, используйте !condition

Короткий вывод

В C++ else нельзя использовать отдельно от if. Если нужна ветка «иначе», пишите if (...) { ... } else { ... }. Если нужно только действие при ложном условии, инвертируйте условие и обойдитесь без else

Связанные материалы:

Что почитать дальше по C++

Если нужен общий маршрут по теме, откройте рубрику C++. Для соседних задач пригодятся эти разборы:

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

Настройки cookie

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