Программа выведет 34 без пробелов и перевода строки. После case 3 нет break, поэтому выполнение продолжится в case 4 и остановится только на его break.
Что выведет программа с оператором switch
Программа выведет 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]].