Для чего применяется слово default в выражении switch

Обновлено: 21.11.2024

Следующие операторы выбирают операторы, которые нужно выполнить, из нескольких возможных вариантов на основе значения выражения:

    выбирает оператор, который нужно выполнить, на основе значения логического выражения. выбирает список операторов, который нужно выполнить, на основе соответствия шаблона выражению.

Инструкция if

Оператор if может быть в любой из следующих двух форм:

Оператор if с частью else выбирает для выполнения один из двух операторов на основе значения логического выражения, как показано в следующем примере:

Оператор if без части else выполняется, только если логическое выражение имеет значение true , как показано в следующем примере:

Операторы if можно вкладывать для проверки нескольких условий, как показано в следующем примере:

В контексте выражения можно использовать условный оператор ?: для вычисления одного из двух выражений на основе значения логического выражения.

Инструкция switch

Оператор switch выбирает список операторов, который нужно выполнить, на основе соответствия шаблона выражению соответствия, как показано в следующем примере:

В предыдущем примере оператор switch использует следующие шаблоны:

    — для сравнения результата выражения с константой. — для проверки того, равен ли результат выражения константе.

Сведения о шаблонах, поддерживаемых оператором switch , см. в статье Шаблоны.

В предыдущем примере также показана ветвь default . Ветвь default указывает операторы, которые нужно выполнить, если выражение не соответствует ни одному другому шаблону. Если выражение не соответствует ни одному шаблону, а ветви default нет, управление передается оператору switch .

Оператор switch выполняет список операторов в первом разделе switch, шаблон ветви которого соответствует выражению соответствия, а условие ветви, если оно есть, равно true . Оператор switch оценивает шаблоны ветвей в порядке, в котором они указаны в коде, сверху вниз. Компилятор создает ошибку, если оператор switch содержит недостижимую ветвь. Это ветвь, которая уже была обработана в верхнем регистре или шаблон которой невозможно сопоставить.

Ветвь default может находиться в любом месте в операторе switch . Независимо от ее расположения ветвь default всегда вычисляется последней и только в том случае, если не будет совпадений ни с одним из других шаблонов ветвей.

Можно указать несколько шаблонов ветвей для одного раздела оператора switch , как показано в следующем примере:

Внутри оператора switch управление не может передаваться от одного раздела switch к следующему. Как показано в примерах этого раздела, обычно в конце каждого раздела switch используется оператор break для передачи управления из оператора switch . Вы также можете использовать операторы return и throw, чтобы передать управление из оператора switch . Чтобы имитировать такое поведение ветви и передать управление другому разделу switch, можно использовать оператор goto .

В контексте оператора можно использовать оператор switch , чтобы вычислить одно выражение из списка кандидатов на основе сопоставления шаблона с выражением.

Охранные условия

Шаблон ветви может недостаточно полно выражать условие выполнения раздела switch. В этом случае можно использовать условие ветви. Это дополнительное условие, которое должно выполняться помимо соответствия шаблону. Условие случая должно быть логическим выражением. Охранное условие указывается после ключевого слова when , идущего за шаблоном, как показано в следующем примере.

В предыдущем примере используются шаблоны положений со вложенными шаблонами отношений.

Поддержка версий языка

  • Выражение соответствия должно иметь один из следующих типов: char, string, bool, целочисленный числовой тип или тип перечисления.
  • В метках case допускаются только константные выражения.

Читайте также: