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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.78
Alex Z
27 / 1 / 0
Регистрация: 29.06.2011
Сообщений: 136
#1

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

12.11.2012, 18:11. Просмотров 1519. Ответов 4
Метки нет (Все метки)

Книга предлагает такую запись оператора 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: оператор;
}
Что-то лепят везде, как хотят...
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.11.2012, 18:11
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Слово break после default (надо или нет) (C++):

Для чего нужны break и default в switch - C++
что означает строка break и default в codeblocks? пример: #include using namespace std; int main() {

Дана строка, в котором есть слово "да" или слово "нет". Если в нем есть слово "нет", то удалить его - C++
Дана строка, в котором есть слово "да" или слово "нет". Если в нем есть слово "нет", то удалить его или получить строку в слова "да" и...

Пользователь вводит предложение и слово, а программа сообщает, есть ли такое слово в предложении или нет - C++
Кто знает, как решить задачу на С++? Задача на строки. Пользователь вводит предложение и слово, а программа сообщает, есть ли такое слово в...

Надо применять delete [] или нет - C++
Привет. Читаю книгу Прата и выполняю задания. Гл.8 Зд.4: Мое решение: #define _CRT_SECURE_NO_WARNINGS #include <iostream> using...

Ключевое слово break - C++
Как правильно надо использовать ключевое слово break??

Написать функцию для определения, входит ли в строку заданное слово, или нет - C++
Написать программу в с++: Дана строка. Написать функцию для определения, входит ли в строку заданное слово, или нет. При написании...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Croessmah
Модератор
Эксперт CЭксперт С++
13134 / 7397 / 828
Регистрация: 27.09.2012
Сообщений: 18,227
Записей в блоге: 3
Завершенные тесты: 1
12.11.2012, 18:17 #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
17 / 15 / 1
Регистрация: 03.11.2010
Сообщений: 169
12.11.2012, 18:17 #3
Если default в конце switch, то не нужно.
CableGuy
14 / 14 / 1
Регистрация: 29.03.2012
Сообщений: 41
12.11.2012, 18:18 #4
В конце switch не обязательно ставить break, так как он нужен чтоб прервать поиск если нашли что нужно. В конце в любом случае искать дальше нечего, так что без разницы.
denys_l
52 / 52 / 4
Регистрация: 26.09.2011
Сообщений: 186
12.11.2012, 18:30 #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 может привести не к тем результатам
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.11.2012, 18:30
Привет! Вот еще темы с ответами:

Структуры. Сформировать из заданных слов возможные слова и выдать сообщение получается ли заданное слово или нет - C++
Даны 3 слога и слово целиком. Сформировать из заданных слов возможные слова и выдать сообщение получается ли заданное слово или нет. Я...

Дан текст. Найти слово встречающееся в каждом предложении или сообщить что такого слова нет - C++
Дан текст. Найти слово встречающееся в каждом предложении или сообщить что такого слова нет. Помогите сделать такую программу. Ничего...

Работа с файлами. Найти слово, встречающееся в каждом предложении, или сообщить, что такого слова нет - C++
Создать файл, содержащий текст на английском языке. Найти слово, встречающееся в каждом предложении, или сообщить,что такого слова...

break или как сделать лучше код - C++
Вообщем делал задание "НАйти первый и последний нулевой элемент",так вот ,дан рабочий код,ну есть интересующий вопрос ,яхотел бы...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
12.11.2012, 18:30
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru