В switch заявлении причины управления должны быть переданы одному из нескольких операторов в зависимости от значения условия.
Условие должно быть целочисленного типа, типа перечисления или типа класса. Если тип класса, условие относится contextually implicitly converted к целочисленному или перечислимому типу. Если тип (возможно, преобразованный) подлежит integral promotions, условие преобразуется в повышенный тип. Любой оператор внутри switch оператора может быть помечен одной или несколькими метками case, как показано ниже:
case constant-expression :
где constant-expressionдолжно быть преобразованием constant expression настроенного типа состояния переключения. Никакие две константы case в одном переключателе не должны иметь одинаковое значение после преобразования.
Операторы переключения могут быть вложенными; case или default метка связана с наименьшим переключатель вмещающих его.
Когда switch оператор выполняется, его состояние оценивается и сравнивается с каждой константой case. Если одна из констант case равна значению условия, управление передается оператору, следующему за меткой сопоставленного case. Если ни одна константа регистра не соответствует условию и если есть default метка, управление передается оператору, помеченному меткой по умолчанию. Если ни один регистр не соответствует и если нет, default то ни один из операторов в переключателе не выполняется.
case и default сами по себе ярлыки не изменяют поток управления, который продолжается беспрепятственно через такие ярлыки. Чтобы выйти из переключателя, см break. [ Note: Обычно подоператор , что является предметом переключателя является соединением и case и default этикетки появляются на показаниях верхнего уровня , содержащихся в (соединение) подоператор, но это не является обязательным. Объявления могут появляться в подзапросе switch утверждения. ] — end note
switch Утверждение вида
switch ( init-statement condition ) statement
эквивалентно
{ init-statement switch ( condition ) statement }
за исключением того, что имена, объявленные в, init-statementнаходятся в той же декларативной области, что и имена, объявленные в condition.