Зачем использовать if-else if в C ++? - PullRequest
1 голос
/ 07 октября 2009

Зачем вам использовать операторы if-else, если вы можете сделать еще один оператор if?

Пример с несколькими ifs:

input = getInputFromUser()
if input is "Hello"
    greet()

if input is "Bye"
    sayGoodbye()

if input is "Hey"
    sayHi()

Пример с else-if:

input = getInputFromUser()
if input is "Hello"
    greet()

else if input is "Bye"
    sayGoodbye()

else if input is "Hey"
    sayHi()

Ответы [ 5 ]

14 голосов
/ 09 октября 2009

Если у вас есть неисключительные условия:

if(a < 100)
{...}
else if (a < 200)
{...}
else if (a < 300)
....

это очень отличается от того же кода без "else" s ...

13 голосов
/ 09 октября 2009

Это также более производительно.

В вашем первом примере, каждые , если будет проверяться, даже если ввод "Hello". Итак, у вас есть все три чека.

Во втором примере выполнение будет остановлено, как только будет найдена ветка, поэтому, если пользователь введет «Hello», это будет только одна проверка вместо трех.

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

8 голосов
/ 07 октября 2009

Вы имеете в виду, как это:

if (a == true && b == false && c == 1 && d == 0) {
    // run if true
}

if (a == false || b == true || c != 1 || d != 0) {
    // else
}

Утверждение else было бы намного понятнее и проще в обслуживании.

7 голосов
/ 08 октября 2009

Если вам нужно выбрать ровно одно действие из заданного набора действий, в зависимости от некоторых условий, естественным и наиболее понятным выбором является либо переключение (не забудьте разбить после каждой ветви), либо комбинация если и еще. Когда я пишу

if (conditon1)
{
    action1();
}
else if (condition2) 
{
    action2();
}
else if (conditon3)
{
    action3();
}
.
.
.
else {
    action_n();
}

читателю ясно, что должно быть выполнено одно из действий. И нет никакой возможности, что из-за ошибки в условиях будет выполнено более одного действия.

0 голосов
/ 17 августа 2018

Следуя тому же примеру, если мы будем использовать последовательность условий if, независимо от того, будет ли вход, он будет выполнять все 3 условия. Замена sequence of if условиями if-else будет запускать только первое условие в лучшем случае, тогда как все 3 в худшем случае.

Итак, в итоге if-else сэкономит наше время выполнения в большинстве случаев, поэтому использование if-else предпочтительнее, чем использование sequence of if условий.

input = getInputFromUser()
if input is "Hello"
    greet()

if input is "Bye"
    sayGoodbye()

if input is "Hey"
    sayHi()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...