Это тот же самый синтаксис, что и во многих языках:
switch (someValue) {
case OPTION_ONE:
case OPTION_LIKE_ONE:
case OPTION_ONE_SIMILAR:
doSomeStuff1();
break; // EXIT the switch
case OPTION_TWO_WITH_PRE_ACTION:
doPreActionStuff2();
// the default is to CONTINUE to next case
case OPTION_TWO:
doSomeStuff2();
break; // EXIT the switch
case OPTION_THREE:
doSomeStuff3();
break; // EXIT the switch
}
Теперь все, что вы знаете, требуется оператор break
, потому что switch
будет переходить к следующему case
, когда break
заявление отсутствует.У нас есть пример этого с OPTION_LIKE_ONE
, OPTION_ONE_SIMILAR
и OPTION_TWO_WITH_PRE_ACTION
.Проблема в том, что нам нужен только этот «переход к следующему делу» очень-очень-очень редко.И очень часто мы ставим перерыв в конце case
.
Для новичка очень легко забыть об этом.И один из моих учителей C даже объяснил нам это, как будто это была ошибка в языке C (не хочу говорить об этом:)
Я хотел бы спросить, есть ли другие языки, которые яне знаю (или забыл) о том, что обрабатывает switch / case следующим образом:
switch (someValue) {
case OPTION_ONE: continue; // CONTINUE to next case
case OPTION_LIKE_ONE: continue; // CONTINUE to next case
case OPTION_ONE_SIMILAR:
doSomeStuff1();
// the default is to EXIT the switch
case OPTION_TWO_WITH_PRE_ACTION:
doPreActionStuff2();
continue; // CONTINUE to next case
case OPTION_TWO:
doSomeStuff2();
// the default is to EXIT the switch
case OPTION_THREE:
doSomeStuff3();
// the default is to EXIT the switch
}
Второй вопрос: есть ли исторический смысл того, почему это так в C?Может быть, продолжить, чтобы следующий случай использовался гораздо чаще, чем мы используем его в наши дни?