Форум программистов, компьютерный форум CyberForum.ru

Слово break после default (надо или нет) - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.78
Alex Z
27 / 1 / 0
Регистрация: 29.06.2011
Сообщений: 136
12.11.2012, 18:11     Слово break после default (надо или нет) #1
Книга предлагает такую запись оператора switch:
C++
1
2
3
4
5
6
7
8
9
10
11
switch (выражение)
{
case значениеОдин: оператор;
   break;
case значениеДва: оператор;
   break;
......
case значениеN: оператор;
   break;
default: оператор;
}
Я подумал, а почему после default нет команды выхода break? Посмотрел примеры в Интернете. Там встречаются разные случаи: иногда также как я тут привёл, а иногда по-другому, то есть так:
C++
1
2
3
4
/* ... */
default: оператор;
   break;
/* ... */
То есть что, как хочешь, так и делаешь? Можно ставить break после default, а можно и нет? Как-то вроде странно. Обычно в программировании более строгие правила. Или я туплю. Объясните, кто разбирается в этом.

(2) И ещё один вопрос на тему оператора switch. Аналогично, лазил по Интернету, смотрел примеры и тоже отметил, что довольно свободно используются круглые скобки в операторе switch. Иногда вообще их нет (как в примере, что я привёл), а иногда есть, но расставлены по-разному. Примеры из Интернета: видел так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
switch (выражение)
{
case значениеОдин:
     {
       оператор1;
       оператор2;
     }
   break;
case значениеДва:
     {
       оператор1;
       оператор2;
     }
   break;
......
case значениеN:
     {
       оператор1;
       оператор2;
     }
   break;
default: оператор;
}
И ещё так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
switch (выражение)
{
case значениеОдин:
     {
       оператор1;
       оператор2;
       break;
     }
case значениеДва:
     {
       оператор1;
       оператор2;
       break;
     }
......
case значениеN:
     {
       оператор1;
       оператор2;
       break;
     }
default: оператор;
}
Что-то лепят везде, как хотят...
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11807 / 6786 / 767
Регистрация: 27.09.2012
Сообщений: 16,839
Записей в блоге: 2
Завершенные тесты: 1
12.11.2012, 18:17     Слово break после default (надо или нет) #2
Цитата Сообщение от Alex Z Посмотреть сообщение
Что-то лепят везде, как хотят...
В зависимости от надобности... Вы, наверное, находили и конструкции типа:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
switch (выражение)
{
case значениеОдин:
     {
       оператор1;
       оператор2;
     }
case значениеДва:
     {
       оператор1;
       оператор2;
       break;
     }
//...
case значениеN:
     {
       оператор1;
       оператор2;
       break;
     }
default: оператор;
}
Добавлено через 1 минуту
Цитата Сообщение от Alex Z Посмотреть сообщение
То есть что, как хочешь, так и делаешь?
break; только говорит, что всё, дальше не нужно выполнять switch, и в конце, если не поставить break в default'е, то ничего страшного не случится.
AlexSun
16 / 14 / 1
Регистрация: 03.11.2010
Сообщений: 169
12.11.2012, 18:17     Слово break после default (надо или нет) #3
Если default в конце switch, то не нужно.
CableGuy
 Аватар для CableGuy
14 / 14 / 1
Регистрация: 29.03.2012
Сообщений: 41
12.11.2012, 18:18     Слово break после default (надо или нет) #4
В конце switch не обязательно ставить break, так как он нужен чтоб прервать поиск если нашли что нужно. В конце в любом случае искать дальше нечего, так что без разницы.
denys_l
51 / 51 / 4
Регистрация: 26.09.2011
Сообщений: 186
12.11.2012, 18:30     Слово break после default (надо или нет) #5
Не знаю, как бы красиво тут написать.
switch последовательно проходит весь блок и выполняет все case, которые в нем заключены до тех пор, пока не встретит оператор break или не будет достигнут конец блока. default выполняется в том случае, если не было ни одного совпадения case с выражением.
1. очему после default нет команды выхода break?
Потому что default является последним оператором в блоке switch и break можно не использовать. Но если запись будет типа
C++
1
2
3
4
5
6
7
8
9
switch (выражение)
{
case значениеОдин: оператор;
   break;
case значениеДва: оператор;
   break;
default: оператор;
case значениеТри: оператор;
}
Приведет к тому, что после выполнения default, будет выполняться case значениеТри...
В моем случае после case значениеТри: оператор; break не стоит, т.к. он тут особо не нужен, но вот его отсутствие после default может привести не к тем результатам
Yandex
Объявления
12.11.2012, 18:30     Слово break после default (надо или нет)
Ответ Создать тему
Опции темы

Текущее время: 17:19. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru