|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
28.03.2021, 01:30 | #1 |
Форумчанин
Регистрация: 22.03.2019
Сообщений: 115
|
Оператор Switch, провалы в программе.
Переход последовательности операторов, связанных с одной ветвью case, в следующую ветвь case считается ошибкой, поскольку в С# должно непременно соблюдаться правило недопущения "провалов" в передаче управления ходом выполнения
программы. Именно поэтому последовательность операторов в каждой ветви case оператора switch оканчивается оператором break. (Избежать подобных "провалов", можно также с помощью оператора безусловного перехода goto, рассматриваемого далее в этой главе, но для данной цели чаще применяется оператор break.) Когда 128 Часть I. Язык C# в последовательности операторов отдельной ветви case встречается оператор break, происходит выход не только из этой ветви, но из всего оператора switch, а выполнение программы возобновляется со следующего оператора, находящегося за пределами оператора switch. Последовательность операторов в ветви default также должна быть лишена "провалов", поэтому она завершается, как правило, оператором break. Правило недопущения "провалов" относится к тем особенностям языка С#, которыми он отличается от С, C++ и Java. В этих языках программирования одна ветвь case может переходить (т.е. "проваливаться") в другую. Данное правило установлено в C# для ветвей case по двум причинам. Во-первых, оно дает компилятору возможность свободно изменять порядок следования последовательностей операторов из ветвей case для целей оптимизации. Такая реорганизация была бы невозможной, если бы одна ветвь case могла переходить в другую. И во-вторых, требование завершать каждую ветвь case явным образом исключает непроизвольные ошибки программирования, допускающие переход одной ветви case в другую. Несмотря на то что правило недопущения "провалов" не допускает переход одной ветви case в другую, в двух или более ветвях case все же разрешается ссылаться с помощью меток на одну и ту же кодовую последовательность, как показано в следующем примере программы. Вопрос: объясните простым языком что такое "провалы" в программе. Если не сложно приведите пример, можно на примере кода с пометками в каком именно месте кода образуется провал. P.S Из прочитанного материала смутное представление о провале в программе. Последний раз редактировалось bITA666; 28.03.2021 в 01:35. |
28.03.2021, 01:35 | #2 |
МегаМодератор
СуперМодератор
Регистрация: 09.11.2010
Сообщений: 7,318
|
Код:
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
|
28.03.2021, 08:01 | #3 |
фрилансер
Форумчанин
Регистрация: 11.10.2019
Сообщений: 980
|
на современных стандартах C++ компилятор выдаст предупреждение о провале. Подавить его можно так
Код:
|
28.03.2021, 10:58 | #4 |
Старожил
Регистрация: 04.02.2011
Сообщений: 4,566
|
А не лишним ли будет break в блоке default ? Ведь всё равно, как говорил Гамлет, дальше - тишина, т.е. переход на следующий оператор. Или для
|
28.03.2021, 11:08 | #5 |
фрилансер
Форумчанин
Регистрация: 11.10.2019
Сообщений: 980
|
digitalis, с моей точки зрения - нет, не лишний )
|
28.03.2021, 11:15 | #6 |
Старожил
Регистрация: 04.02.2011
Сообщений: 4,566
|
|
28.03.2021, 11:29 | #7 |
фрилансер
Форумчанин
Регистрация: 11.10.2019
Сообщений: 980
|
digitalis, хорошая читаемость - это объективно или субъективно?
|
28.03.2021, 12:38 | #8 |
Старожил
Регистрация: 04.02.2011
Сообщений: 4,566
|
Таки - да. Но с кочки зрения компилятора - монофигственно
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Оператор switch | XeniaZharinova | C# (си шарп) | 4 | 07.12.2014 20:19 |
C++ оператор SWITCH | Ramina | Помощь студентам | 10 | 05.02.2012 19:32 |
switch оператор | Alex-Kunfuman | Общие вопросы C/C++ | 28 | 22.01.2012 04:42 |
C++ оператор switch | Pingvinenok_Lolo | Помощь студентам | 4 | 05.12.2011 23:11 |
Оператор switch. | IgorArhangel | Помощь студентам | 4 | 16.01.2009 01:53 |