Update and fix riussian translation of switch statement (#34013)
This commit is contained in:
committed by
Randell Dawson
parent
04c5d1e948
commit
2e727785fb
@ -1,38 +1,38 @@
|
||||
---
|
||||
title: Switch Case
|
||||
localeTitle: Корпус выключателя
|
||||
title: switch case
|
||||
localeTitle: switch case
|
||||
---
|
||||
# Корпус выключателя
|
||||
# switch case
|
||||
|
||||
Оператор switch похож на набор `if statements` .
|
||||
Оператор switch похож на набор операторов `if` .
|
||||
|
||||
Это список возможностей с действием для каждой возможности и необязательным действием по умолчанию, если ничто иное не оценивает значение true.
|
||||
Он представляет собой список возможных вариантов, с действием для каждого варианта и необязательным действием по умолчанию, если ни один вариант не сработал.
|
||||
|
||||
Мы выходим из коммутатора на `break` . Если оператор `break` не будет достигнут до начала следующего случая, выполнение провалится и начнет выполнение кода в следующем случае.
|
||||
Мы выходим из оператора switch с помощью `break` . Если оператор `break` не будет встречен до начала следующей метки case, программа начнет выполнять инструкции следующей метки case.
|
||||
|
||||
## Синтаксис переключателя ... case
|
||||
## Синтаксис switch...case
|
||||
|
||||
```c
|
||||
switch (n)
|
||||
{
|
||||
case constant1:
|
||||
// code to be executed if n is equal to constant1;
|
||||
// код, который необходимо выполнить в случае, если n равно constant1;
|
||||
break;
|
||||
|
||||
case constant2:
|
||||
// code to be executed if n is equal to constant2;
|
||||
// код, который необходимо выполнить в случае, если n равно constant2;
|
||||
break;
|
||||
.
|
||||
.
|
||||
.
|
||||
default:
|
||||
// code to be executed if n doesn't match any constant
|
||||
// код, который необходимо выполнить в случае, если n не равно ни одной из констант
|
||||
}
|
||||
```
|
||||
|
||||
## пример
|
||||
## Пример
|
||||
|
||||
Использование оператора switch над несколькими операторами if / else может способствовать большей скорости и удобочитаемости.
|
||||
Использование оператора switch вместо нескольких операторов if/else может способствовать большей скорости и удобочитаемости.
|
||||
|
||||
```c
|
||||
# include <stdio.h>
|
||||
@ -61,9 +61,9 @@ switch (n)
|
||||
case '/':
|
||||
printf("%.1lf / %.1lf = %.1lf",firstNumber, secondNumber, firstNumber/firstNumber);
|
||||
break;
|
||||
// Operator is doesn't match any case constant (+, -, *, /)
|
||||
// operator не равен ни одной из констант в case (+, -, *, /)
|
||||
default:
|
||||
printf("Error! operator is not correct");
|
||||
printf("Error! Operator is not correct");
|
||||
}
|
||||
|
||||
return 0;
|
||||
@ -72,18 +72,18 @@ switch (n)
|
||||
|
||||
## Вывод:
|
||||
|
||||
```c
|
||||
```
|
||||
-> Enter an operator (+, -, *,): -
|
||||
-> Enter two operands: 32.5
|
||||
-> 12.4
|
||||
-> 32.5 - 12.4 = 20.1
|
||||
```
|
||||
|
||||
## Обзор: Switch vs if else
|
||||
## Обзор: switch vs if/else
|
||||
|
||||
* Проверьте выражение тестирования: оператор if-then-else может тестировать выражения на основе диапазонов значений или условий, тогда как оператор switch проверяет выражения, основанные только на одном целочисленном, перечисляемом значении или объекте String.
|
||||
* Лучше переключайтесь на многопоточность: когда компилятор компилирует оператор switch, он проверяет каждую из констант case и создает «таблицу перехода», которую он будет использовать для выбора пути выполнения в зависимости от значения выражения. Поэтому, если нам нужно выбрать среди большой группы значений, оператор switch будет работать намного быстрее, чем эквивалентная логическая кодировка с использованием последовательности if-elses. Компилятор может это сделать, потому что он знает, что константы case имеют одинаковый тип и просто должны сравниваться для равенства с выражением switch, тогда как в случае выражений компилятор не имеет таких знаний.
|
||||
* if-else лучше для логических значений: If-else условные ветви отлично подходят для переменных условий, которые приводят к булевому, тогда как операторы switch отлично подходят для фиксированных значений данных.
|
||||
* Скорость. Оператор switch может оказаться быстрее, чем если бы при условии, что количество дел является хорошим. Если есть только несколько случаев, это может не повлиять на скорость в любом случае. Переключатель предпочтений, если число случаев больше, чем 5, иначе вы можете использовать if-else.
|
||||
* Если коммутатор содержит более пяти элементов, он реализуется с помощью таблицы поиска или хеш-листа. Это означает, что все элементы получают одинаковое время доступа по сравнению со списком if: s, где последний элемент занимает гораздо больше времени для достижения, поскольку он должен сначала оценивать каждое предыдущее условие.
|
||||
* Ясность в удобочитаемости: коммутатор выглядит намного чище, когда вам приходится комбинировать случаи. Ifs также очень уязвимы для ошибок. Отсутствие заявления другого может нанести вам ущерб. Добавление и удаление меток также проще с помощью переключателя и делает ваш код значительно легче изменять и поддерживать.
|
||||
* Проверьте выражение тестирования: оператор if/else может тестировать выражения на основе диапазонов значений или условий, тогда как оператор switch проверяет выражения, основанные только на одиночном целом числе, перечисляемом значении или строке.
|
||||
* switch более подходит для множественных ветвлений: когда компилятор компилирует оператор switch, он проверяет каждую из констант case и создает «таблицу переходов», которую он будет использовать для выбора пути выполнения в зависимости от значения выражения. Поэтому, если нам нужно выбрать среди большой группы значений, оператор switch будет работать намного быстрее, чем эквивалентная логика, реализованная с использованием последовательности операторов if/else. Компилятор может это сделать, потому что он знает, что константы case имеют одинаковый тип и просто должны сравниваться на равенство с выражением switch, тогда как в случае операторов if у компилятора нет таких сведений.
|
||||
* if/else лучше для логических значений: условные ветви оператора if/else отлично подходят для переменных условий, которые вычисляются в булево значение, тогда как операторы switch отлично подходят для фиксированных значений данных.
|
||||
* Скорость. Оператор switch может оказаться быстрее чем if/else, при условии, достаточно большого количества меток case. Если меток case мало, это может не оказать влияние на скорость. Отдавайте предпочтение switch в случае, когда количество меток case превышает 5, иначе можно также использовать if/else.
|
||||
* Если switch содержит более пяти веток, он реализуется с помощью таблицы поиска или хеш-листа. Это означает, что все элементы получают одинаковое время доступа, в отличие от списка веток if/else, где достижение последнего элемента занимает гораздо больше времени, поскольку необходимо вычислить все предыдущие условия.
|
||||
* Ясность и удобочитаемость: switch выглядит намного чище, если вам приходится комбинировать метки case. Операторы if помимо прочего очень уязвимы для ошибок. Пропущенное ключевое слово else может нанести вам большой ущерб. Добавление и удаление меток в операторе switch значительно проще и делает ваш код значительно легче модифицируемым и поддерживаемым.
|
||||
|
Reference in New Issue
Block a user