![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Форумчанин
Регистрация: 22.03.2019
Сообщений: 115
|
![]()
Переход последовательности операторов, связанных с одной ветвью 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. |
![]() |
![]() |
![]() |
#2 |
МегаМодератор
СуперМодератор
Регистрация: 09.11.2010
Сообщений: 7,430
|
![]() Код:
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись
![]() |
![]() |
![]() |
![]() |
#3 |
фрилансер, препод.
Участник клуба
Регистрация: 11.10.2019
Сообщений: 1,044
|
![]()
на современных стандартах C++ компилятор выдаст предупреждение о провале. Подавить его можно так
Код:
|
![]() |
![]() |
![]() |
#4 |
Старожил
Регистрация: 04.02.2011
Сообщений: 4,716
|
![]()
А не лишним ли будет break в блоке default ? Ведь всё равно, как говорил Гамлет, дальше - тишина, т.е. переход на следующий оператор. Или для
|
![]() |
![]() |
![]() |
#5 |
фрилансер, препод.
Участник клуба
Регистрация: 11.10.2019
Сообщений: 1,044
|
![]()
digitalis, с моей точки зрения - нет, не лишний )
|
![]() |
![]() |
![]() |
#6 |
Старожил
Регистрация: 04.02.2011
Сообщений: 4,716
|
![]() |
![]() |
![]() |
![]() |
#7 |
фрилансер, препод.
Участник клуба
Регистрация: 11.10.2019
Сообщений: 1,044
|
![]()
digitalis, хорошая читаемость - это объективно или субъективно?
![]() |
![]() |
![]() |
![]() |
#8 |
Старожил
Регистрация: 04.02.2011
Сообщений: 4,716
|
![]()
Таки - да. Но с кочки зрения компилятора - монофигственно
![]() |
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Оператор 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 |