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

Когда не нужен оператор else? - C++

Восстановить пароль Регистрация
 
svpol
0 / 0 / 0
Регистрация: 13.10.2012
Сообщений: 9
23.11.2012, 22:52     Когда не нужен оператор else? #1
Объясните, пожалуйста, когда обязателен,а когда не обязателен оператор else.
Допустим, вот в таком коде:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
#include <iostream>
using namespace std;
 
int main()
{
    unsigned short small;
    unsigned long large;
    unsigned short skip;
    unsigned short target;
    const unsigned short MAXSMALL=65535;
    
    cout << "Enter a small number: ";
    cin >> small;
    cout << "Enter a large number: ";
    cin >> large;
    cout << "Enter a skip number: ";
    cin >> skip;
    cout << "Enter a target number: ";
    cin >> target;
    cout << "\n";
    
    while (small < large && large > 0 && small < MAXSMALL)
    {
        small++;
        
        if (small % skip == 0)
        {
        cout << "skipping on " << small << endl;
        continue;
        }
        if (large == target)
        {
            cout << "Target reached!";
            break;
        }
        large-=2;
    }
 
    cout << "\nSmall: " << small << "Large: " << large << endl;
    return 0;
if прекрасно обходится без всяких else. Почему так?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.11.2012, 22:52     Когда не нужен оператор else?
Посмотрите здесь:

Перестало выводить, когда задание списков перевел в конструкторы, когда были просто функции выводило нормально. C++
Записать условия когда является истинным , когда: C++
C++ Когда используется * перед указателями, а когда нет?
C++ Почему обращение к методам осуществляется через оператор прямого доступа, а не через оператор указателей->?
C++ Когда в классе нужен копирующий конструктор?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
MrGluck
Ворчун
Эксперт С++
 Аватар для MrGluck
4920 / 2663 / 243
Регистрация: 29.11.2010
Сообщений: 7,419
23.11.2012, 22:55     Когда не нужен оператор else? #2
Если не указывать else, то проверяет условие всегда. Если указать, то лишь в случае, если не удовлетворяет предшествующему условию if.
ValeryS
Модератор
6376 / 4842 / 442
Регистрация: 14.02.2011
Сообщений: 16,045
23.11.2012, 23:01     Когда не нужен оператор else? #3
Цитата Сообщение от svpol Посмотреть сообщение
Объясните, пожалуйста, когда обязателен,а когда не обязателен оператор else.
ты это поймешь если переведешь слово else "иначе"
например утверждение
если идет дождь сидим дома
иначе идем гулять
здесь только с else
два пути или сидим дома или идем гулять
а
если идет дождь сидим дома
без else
здесь несколько решений если нет дождя можем сидеть дома можем пойти гулять можем песни петь.......
svpol
0 / 0 / 0
Регистрация: 13.10.2012
Сообщений: 9
23.11.2012, 23:10  [ТС]     Когда не нужен оператор else? #4
Цитата Сообщение от ValeryS Посмотреть сообщение
ты это поймешь если переведешь слово else "иначе"
например утверждение
если идет дождь сидим дома
иначе идем гулять
здесь только с else
два пути или сидим дома или идем гулять
а
если идет дождь сидим дома
без else
здесь несколько решений если нет дождя можем сидеть дома можем пойти гулять можем песни петь.......
Честно говоря, не понял, как это практически реализуется. В приведенном примере, если (small % skip == 0) false управление переходит к следующему оператору if, что с else, что без else.
ValeryS
Модератор
6376 / 4842 / 442
Регистрация: 14.02.2011
Сообщений: 16,045
23.11.2012, 23:25     Когда не нужен оператор else? #5
Цитата Сообщение от svpol Посмотреть сообщение
В приведенном примере, если (small % skip == 0) false управление переходит к следующему оператору if, что с else, что без else.
серьезно
а оператор continue; Вам ни о чем не говорит?
Цитата Сообщение от svpol Посмотреть сообщение
i
C++
1
2
3
4
5
f (small % skip == 0)
* * * * {
* * * * cout << "skipping on " << small << endl;
* * * * continue;
* * * * }
это значит что если условие выполнится то мы наплевав на все что ниже идем опять к началу цикла то бишь вот сюда
Цитата Сообщение от svpol Посмотреть сообщение
C++
1
while (small < large && large > 0 && small < MAXSMALL)
это можно записать без continue вот так
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
while (small < large && large > 0 && small < MAXSMALL)
{
  small++;
        
   if (small % skip == 0)
   {
    cout << "skipping on " << small << endl;
   }
    else
   {
    if (large == target)
    {
     cout << "Target reached!";
     break;
     }
    large-=2;
   }   
 }
MrGluck
Ворчун
Эксперт С++
 Аватар для MrGluck
4920 / 2663 / 243
Регистрация: 29.11.2010
Сообщений: 7,419
23.11.2012, 23:30     Когда не нужен оператор else? #6
Смотрите, тут лишняя проверка будет:
if (лысый)
if (имеет длинные волосы)
if (имеет короткие волосы)

Очевидно, что если лысый, то волос у него уже нет, поэтому лучше все переписать так:
if (лысый) ...
else // если не лысый
{
if (имеет длинные волосы) {}
esle {} // если имеет недлинные волосы
}
Yandex
Объявления
23.11.2012, 23:30     Когда не нужен оператор else?
Ответ Создать тему
Опции темы

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