Ветвление: if-else, тернарный оператор, switch-case
Выбирайте между цепочками if-else, тернарными выражениями и операторами switch для понятного ветвления.
«Ветвление: if-else, тернарный оператор, switch-case» — бесплатный урок C++ Academy на CoddyKit. Это урок 1 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения C++ Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс C++ Academy содержит 4 уроков всего.
Инструкция if
Базовая условная конструкция. Тело выполняется, когда условие истинно. Фигурные скобки необязательны для одной инструкции, но всегда рекомендуются.
int score = 85;
if (score >= 60) {
std::cout << "Pass\n";
}Цепочки if-else
Проверяйте альтернативы с помощью else if и завершающей else. Выполняется первая истинная ветвь.
if (score >= 90) std::cout << "A";
else if (score >= 80) std::cout << "B";
else if (score >= 70) std::cout << "C";
else std::cout << "F";Булевы условия
Подходит любое выражение, которое можно преобразовать в bool. Указатели считаются ложными, если равны null, а целые числа — если равны нулю. Для ясности указывайте намерение явно.
Инициализация в if (C++17)
C++17 позволяет объявлять переменную внутри if. Область видимости переменной ограничена телом if-else.
if (auto it = map.find(key); it != map.end()) {
std::cout << it->second;
}Тернарный оператор
condition ? a : b возвращает одно из двух значений. Отлично подходит для простого выбора, но плохо — для вложенной логики.
int max = (a > b) ? a : b;
std::string msg = (n == 1) ? "item" : "items";Вложенные тернарные операторы: избегайте их
Вложенные тернарные операторы трудно читать. Вместо них используйте if-else или вынесите логику во вспомогательную функцию.
// Hard to read
auto label = (n < 0) ? "neg" : (n == 0) ? "zero" : "pos";
// Clearer
std::string label;
if (n < 0) label = "neg";
else if (n == 0) label = "zero";
else label = "pos";Инструкция switch
Сравнивает одно значение с несколькими константами. Для каждой ветви нужен break, иначе выполнение перейдёт к следующему варианту.
switch (day) {
case 1: std::cout << "Mon"; break;
case 2: std::cout << "Tue"; break;
default: std::cout << "?"; break;
}Намеренный переход к следующей ветви
Объединяйте несколько вариантов, использующих один и тот же код. В C++17 появился маркер [[fallthrough]], сообщающий об этом компилятору.
switch (c) {
case 'a': case 'e': case 'i': case 'o': case 'u':
std::cout << "vowel"; break;
default:
std::cout << "consonant";
}Ограничения switch
switch работает только с целочисленными типами и типами перечислений. Для строк используйте if-else или хеш-таблицу.
Инициализатор в switch (C++17)
Как и в if, в заголовке switch можно объявить переменную.
switch (auto value = compute(); value) {
case 0: ...
default: ...
}Шаблон: отображение для поиска
Для ветвления по строковым ключам std::unordered_map может быть понятнее, чем цепочка if-else.
std::unordered_map<std::string, std::function<void()>> commands = {
{"start", []{ start(); }},
{"stop", []{ stop(); }}
};
if (auto it = commands.find(cmd); it != commands.end())
it->second();Быстрая проверка
Что произойдёт, если в case конструкции switch нет break, а следующий вариант не пуст?
Итоги
Используйте if-else для общего ветвления, тернарный оператор — для краткого выбора значения, а switch — при сравнении одного значения с множеством целочисленных констант. Инициализирующие инструкции C++17 упрощают управление областью видимости.
Часто задаваемые вопросы
Урок «Ветвление: if-else, тернарный оператор, switch-case» бесплатный?
Да — полный текст урока «Ветвление: if-else, тернарный оператор, switch-case» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс C++ Academy, подпишись на CoddyKit PRO. Курс C++ Academy содержит 4 уроков всего.
Чему я научусь в уроке «Ветвление: if-else, тернарный оператор, switch-case»?
Выбирайте между цепочками if-else, тернарными выражениями и операторами switch для понятного ветвления. Ты практикуешь C++ Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать C++ Academy?
Предыдущий опыт не требуется. C++ Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 1 из 4.
Сколько времени занимает урок «Ветвление: if-else, тернарный оператор, switch-case»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке C++ Academy?
Да. Каждый урок C++ Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Ветвление: if-else, тернарный оператор, switch-case
- Шаблоны циклов: for, while, do-while
- Цикл for на основе диапазона с контейнерами
- Досрочный возврат, break, continue и goto