Страницы

Поиск по вопросам

понедельник, 30 декабря 2019 г.

Оператор switch, нужен ли break после метки default?

#cpp #switch


Какой смысл в операторе 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?
}

    


Ответы

Ответ 1



Синтаксически, нет необходимости в самом последнем 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 не сразу понятно, что к чему относится.

Комментариев нет:

Отправить комментарий