Оператор переключателя вызывает передачу управления на один изнескольких операторов в зависимости от значения выражения. Выражение должно быть целочисленного типа или типа класса, длякоторого существует однозначное преобразование к целочисленномутипу ($$R.12.3). Выполняются стандартные целочисленные преобразования.Любой из операторов переключателя можно пометить одним или несколькимипрефиксами, имеющими вид: case выражение-константа: Здесь выражение-константа ($$R.5.19) приводится к преобразованномутипу выражения переключателя. Никакие две константы из case одногопереключателя не должны иметь одинаковое значение. В переключателе может быть только один префикс вида default: Операторы переключателя могут быть вложенными, тогда метки изcase или default относятся к самому первому переключателю,объемлющему их. При выполнении оператора переключателя вычисляется выражение, и его значение сравнивается с каждой из констант вариантов (case).Если одна из этих констант равна значению выражения, то управлениепередается в оператор, идущий за этой константой. Если ни одна изконстант не совпала со значением выражения, но есть префиксdefault, то управление передается на оператор с этим префиксом.Если префикса default нет, и совпадения не было, то не выполняетсяни один из операторов переключателя. Если операторы, выполняемые в результате выбора, не приводятк каким-либо передачам управления, то программа продолжает выполняться"по меткам case и default" беспрепятственно. Выход из переключателявозможен с помощью оператора break (см. $$R.6.6.1). Обычно оператор, с которым имеет дело переключатель, бываетсоставным. Описания могут появиться в операторах переключателя.Однако переход ниже описания, в котором была явная или неявнаяинициализация, считается незаконным, если только описание ненаходится во внутреннем блоке, который обходится (т.е. полностьюобходится при передаче управления, $$R.6.7). Отсюда следует,что описание с явной или неявной инициализацией должно содержатьсяво внутреннем блоке.