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

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

Войти
Регистрация
Восстановить пароль
 
thick_int
Заблокирован
#1

Оператор switch - C++

10.02.2012, 02:19. Просмотров 608. Ответов 3
Метки нет (Все метки)

Зависит ли
a) объектный код от порядка меток case и default в данном операторе?
б) если ответ на первый вопрос положителен, то тогда можно ли говорить, что при том или ином порядке меток case и default оператор switch выполняется быстрее ччем при другом?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.02.2012, 02:19     Оператор switch
Посмотрите здесь:

Оператор switch - C++
целое число в диапазоне 0 – 9. Вывести строку — название соответствующей цифры на английском языке (0 — "zero", 1 — "one", 2 — "two", ...)....

оператор Switch???? - C++
Люди добрые помогите что здесь не так не пойму #include<conio.h> #include<stdio.h> #include<iostream> using namespace std; ...

Оператор switch - C++
Даны два целых числа: D (день) и M (месяц), определяющие правильную дату невисокосного года. Вывести значения D и M для даты,...

оператор switch - C++
КАк сделать чтобы при выборе неправильного ответа во втрой switch программа не в ходила int main(){ char v1; cout <<"Pervui...

оператор switch - C++
Задача весьма проста, необходима для тренировки. Я должен использовать оператор свитч таким образом, что после ввода определенного символа...

оператор switch - C++
С++ начала учить недавно, и многое не понимаю... задачи решаю только по-аналогии.. Задача Составить структурную схему алгоритма и...

Оператор switch C++ - C++
Помогите с кодом, пожалуйста. На скрине задание.

Оператор switch C++ - C++
Вместо вывода на экран отрицательных значений, работает default. Так же при вводе двухзначного числа выводит первую цифру этого же числа....

С++.Оператор switch. - C++
Не могу избавиться от ошибки в программном коде. #include <iostream> #include <math.h> #include <conio.h> using namespace std; ...

Оператор switch - C++
Возникла проблема. Не хочет высчитываться "v". Что не так? #include <iostream.h> #include <math.h> main () { int k; double...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Bers
Заблокирован
10.02.2012, 08:56     Оператор switch #2
Белая магия компилятора может превратить свитч в хитрую структуру данных, наподобие map
Где ключ - это значение case, а значение по ключу - указатель на функцию, которая запустит блок case на выполнение.

Таким образом, в боевом коде свитч не будет пошагово проверять каждое значение case, а сразу прыгнет на функцию-блок нужного case.

Точная конструкция этой хитрой структуры зависит от компилятора с его оптимизациями.
Одно можно сказать совершенно наверняка:

В целом, конструкции типа:
C++
1
2
3
4
5
int val = 100500;
if (val == 1) { ... }
if (val == 2) { ... }
...
if (val == 100500) { ... }
Компилятору оптимизировать сложнее, чем свитч с аналогичной логикой.
Поэтому, можно считать, что switсh в среднем работает быстрее, за счет того, что потенциально лучше может быть оптимизирован.

Но вообще есть нюансы. Например, если конкретный блок отработавшего case не break`неццо, то сам блок switсh не закончит свою работу, а будит продолжаться поиск уже нового претендента case

Поэтому, независимо от того, во что блок switсh превратит белая магия компилятора, но на уровне самого исходного кода порядок следования case важен. Он определяет логику работы самого блока switсh.
thick_int
Заблокирован
10.02.2012, 10:53  [ТС]     Оператор switch #3
Не совсем, конечно, точно на вопросы, но все равно спасибо.
Очень даже интересные сведения.
silent_1991
Эксперт С++
4958 / 3034 / 149
Регистрация: 11.11.2009
Сообщений: 7,027
Завершенные тесты: 1
10.02.2012, 11:43     Оператор switch #4
thick_int, иногда полезно заглянуть в FAQи...
Неочевидные ответы на простые вопросы
6 пункт.
Yandex
Объявления
10.02.2012, 11:43     Оператор switch
Ответ Создать тему
Опции темы

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