1 / 1 / 0
Регистрация: 29.03.2014
Сообщений: 24
1

Зачем используют конструкцию в длинных ветвлениях else if, если можно просто использовать один if

28.08.2014, 16:02. Показов 1075. Ответов 10
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Добрый День!
У меня очень простой вопрос.
Зачем используют конструкцию в длинных ветвлениях else if, если можно просто использовать один if , вот пример :
C++
1
2
3
4
5
6
7
8
9
int a;
    cin >> a;
    if (a == 13)
       a *= 2;
    else if (a == 25)
        a *= a;
    else if (a == 45)
        a += a;
    cout << a<<endl;
Когда можно сделать просто
C++
1
2
3
4
5
6
7
8
9
 int a;
    cin >> a;
    if (a == 13)
       a *= 2;
     if (a == 25)
        a *= a;
     if (a == 45)
        a += a;
    cout << a<<endl;
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
28.08.2014, 16:02
Ответы с готовыми решениями:

Зачем используют конструкцию !()
например var isFirefox = ! ! ( navigator . vendor &amp;&amp; navigator . vendorSub ) ; зачем !! -...

Зачем вообще нужно слово NULL если можно просто написать 0?
Для чего нужны все эти слова как например NULL, EOF? Вместо них можно просто цифры написать.

Зачем учить указатели, если можно использовать вектор?
Не могу понять, зачем учить указатели если в большинстве случаев для выделения памяти намного...

Зачем верстать все с нуля, если можно использовать фреймворки?
Существуют различные фреймворки Bootstrap, Wordpress, Joomla...они упрощают верстку сайта и имеют...

10
4820 / 2286 / 287
Регистрация: 01.03.2013
Сообщений: 5,969
Записей в блоге: 29
28.08.2014, 16:08 2
По моим заблуждениям, конструкции "else if" в смысле единой конструкции "elseif" с С и С++ нет. Есть конструкция "else", после которой может идти что угодно, в том числе и новый "if". А наличие конструкции "else" очень удобно, если бы была "elseif", было бы имхо еще удобнее.
0
Эксперт по математике/физикеЭксперт С++
2112 / 1382 / 399
Регистрация: 16.05.2013
Сообщений: 3,554
Записей в блоге: 6
28.08.2014, 16:11 3
Цитата Сообщение от Inkognito21 Посмотреть сообщение
вот пример
Не удачный пример. Рассмотрите такой:
C++
1
2
3
4
5
6
7
8
9
int a;
    cin >> a;
    if (a > 13)
       a *= 2;
    else if (a > 25)
        a *= a;
    else if (a > 45)
        a += a;
    cout << a<<endl;
и
C++
1
2
3
4
5
6
7
8
9
int a;
    cin >> a;
    if (a > 13)
       a *= 2;
    if (a > 25)
        a *= a;
    if (a > 45)
        a += a;
    cout << a<<endl;
И пользователь вводит 100.
1
Эксперт С++
4986 / 3093 / 456
Регистрация: 10.11.2010
Сообщений: 11,169
Записей в блоге: 10
28.08.2014, 16:17 4
Чтобы не выполнять лишнюю проверку. Ведь если a ровно 13, то 25 оно равняться никак не может.
1
1 / 1 / 0
Регистрация: 29.03.2014
Сообщений: 24
28.08.2014, 17:05  [ТС] 5
Ilot , да в этом примере действительно разница есть )
castaway, тоже согласен, не подумал я над этим.
Спасибо за ответы!
0
10 / 10 / 0
Регистрация: 18.08.2014
Сообщений: 58
28.08.2014, 17:08 6
Если использовать только if как у Вас, то не смотря на достигнутое условие, допустим оно достиглось на 2 ифе, проверка будет продолжаться дальше пока не переберуться все ифы. Если же использовать if...else...if и.т.д., то проверка прекратится при достижении нужного условия
0
48 / 37 / 27
Регистрация: 11.02.2014
Сообщений: 134
28.08.2014, 17:50 7
Цитата Сообщение от Ilot Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
9
int a;
cin >> a;
if (a > 13)
a *= 2;
else if (a > 25)
a *= a;
else if (a > 45)
a += a;
cout << a<<endl;
какой-то неудачный пример, вроде бы здесь else if никогда не выполнятся? или я ошибаюсь?
и даAlexander_1, правильно говорит, если одни if-ы програма будет дольше работать
0
2444 / 1842 / 406
Регистрация: 15.12.2013
Сообщений: 8,241
28.08.2014, 17:56 8
D_Ok, запустите сами и проверьте.
0
D_Ok
28.08.2014, 17:58
  #9

Не по теме:

S_el, зачем мне запускать, я и так вижу.

0
Эксперт С++
4986 / 3093 / 456
Регистрация: 10.11.2010
Сообщений: 11,169
Записей в блоге: 10
28.08.2014, 18:11 10
Правильно заметил. else if никогда не выполнится.
0
S_el
28.08.2014, 19:07     Зачем используют конструкцию в длинных ветвлениях else if, если можно просто использовать один if
  #11

Не по теме:

D_Ok,я увидел в ваших словах сомнения :

Цитата Сообщение от D_Ok Посмотреть сообщение
вроде бы здесь else if никогда не выполнятся? или я ошибаюсь?

0
28.08.2014, 19:07
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
28.08.2014, 19:07
Помогаю со студенческими работами здесь

Зачем в коде контравариантность если её используют в приведении базового типа к наследуемому?
Доброго времени суток!!! Помогите разобраться почему на экран не выводится &quot;Arial&quot;, 20,...

Зачем для перевода строки используют два символа #13#10, если достаточно #13?
кто то мне может объяснить или дать чё почитать? зачем для перевода строки используют два символа...

Можно ли использовать такую конструкцию?
Здраствуйте! Нужно ввести несколько работником тоесть их ФИО и зарплату. Можно ли использовать для...

Как использовать конструкцию Если в запросе (SQL)
Есть такой запрос: (в смысле его код) SELECT * FROM WHERE ((( . BETWEEN () AND ())));...


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru