Какой смысл в операторе break
после метки default
, если оператор switch
после default
итак завершает свою работу?
Часто вижу примеры, как с break
так и без после default
:
switch(number)
{
case 0: cout << "Too small.\n"; break;
case 1: cout << "One.\n"; break;
case 2: cout << "Two.\n"; break;
case 3: cout << "Three.\n"; break;
default: cout << "Too large.\n";
break; // какой смысл в этом break?
}
Синтаксически, нет необходимости в самом последнем break
, причём неважно в какой секции он находится.
switch(number)
{
case 1: cout << 1; break;
case 2: cout << 2; break;
default:
case 0: cout << "Мало"; break;
case 3: cout << "Много"; /*break;*/
}
По сути, break
- это goto на позицию сразу за фигурной скобкой. (А continue
на позицию перед ней, но только в циклах)
В этом свете, очевидна излишнесть этого оператора.
Однако, этот break
всё ещё может быть полезен, если список случаев (case
) может изменяться в будущем.
При наличии всех break
сложнее ошибиться и получить вот такую ошибку:
switch(number)
{
case 1: cout << 1; break;
case 2: cout << 2; break;
default:
case 0: cout << "Мало"; break;
case 3: cout << 3; // При добавлении строчки, забыли добавить пропущенный break
case 4: cout << "Много";
}
Это становится более актуальным, если секции не такие тривиальные, и просто окинув взглядом switch
не сразу понятно, что к чему относится.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Скачал где-то пример снифераОн базируется на ioctlsocket( s, SIO_RCVALL, & flag ) Вопрос, почему снифер не ловит GET запросы, а ловит лишь ответы? Может ли он ловить...
Добрый день! Подскажите, как использовать функции из Go в программе на C++? Буду благодарен за простой и доступный пример
Вывод случайного элемента регулируется событиемПри каждом вызове элемент выбирается один и тот же, если использовать подобную понятную...