Что выведет программа с оператором switch

Программа выведет 34 без пробелов и перевода строки. После case 3 нет break, поэтому выполнение продолжится в case 4 и остановится только на его break.

Короткий ответ

Что ответить на собеседовании

Программа выведет 34 без пробелов и перевода строки. После case 3 нет break, поэтому выполнение продолжится в case 4 и остановится только на его break.

Подробный разбор

Ответ с пояснениями

Условие

Необходимо определить, какой текст появится в консоли после выполнения следующей программы.

#include <iostream>
using namespace std;

int main() {
    int num = 3;
    switch(num) {
        case 1: cout << 1;
        case 2: break;
        case 3: cout << 3;
        case 4: cout << 4; break;
        default: cout << 5;
    }
    return 0;
}

Ответ

Программа выведет 34 без пробелов и перевода строки. После case 3 нет break, поэтому выполнение продолжится в case 4 и остановится только на его break.

switch переходит к метке, соответствующей num, то есть к case 3. После вывода 3 следующая метка не выполняет повторную проверку условия: исполняется и вывод 4.

case 1 и case 2 пропускаются, default не достигается. Если требовалось вывести только 3, нужно добавить break после соответствующего cout. Намеренное проваливание в современном C++ можно обозначать [[fallthrough]].

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее