В чем различия между if, else и else if? - PullRequest
6 голосов
/ 17 сентября 2009

Я пытаюсь различить разницу между

if 
else 
else if 

Когда вы их используете, а когда нет?

У меня домашнее задание с кучей экземпляров, и я сталкиваюсь с ошибкой кода из-за незнания различий между ними.

Может кто-нибудь определить, как их использовать?

Ответы [ 17 ]

54 голосов
/ 17 сентября 2009

Оператор if имеет следующую структуру:

if (condition)
{
    // executed only if "condition" is true
}
else if (other condition)
{
    // executed only if "condition" was false and "other condition" is true
}
else
{
    // executed only if both "condition" and "other condition" were false
}

Часть if является единственным блоком, который является абсолютно обязательным. else if позволяет вам сказать «хорошо, если предыдущее условие не было истинным, то если это условие истинно ...». Другой говорит: «Если бы ни одно из вышеприведенных условий не было выполнено ...»

Вы можете иметь несколько блоков else if, но только один блок if и только один (или ноль) else блоков.

30 голосов
/ 17 сентября 2009

If-elseif-else можно записать как вложенное if-else. Это (логически говоря) эквивалент:

if (A) 
{
    doA();
}
else if (B)
{
    doB();
}
else if (C)
{
    doC();
}
else
{
    doX();
}

совпадает с:

if (A) 
{
    doA();
}
else
{
    if (B)
    {
        doB();
    }
    else
    {
         if (C)
         {
             doC();
         }
         else
         {
             doX();
         }
    }
}

В результате будет оцениваться только один из doA, doB, doC или doX.

21 голосов
/ 18 сентября 2009
**IF** you are confused
 read the c# spec
**ELSE IF** you are kind of confused
 read some books
**ELSE**
 everything should be OK.

:)

13 голосов
/ 17 сентября 2009

If, else и else if - все конструкции, помогающие «ветвить» код По сути, вы используете их, когда хотите принять решение.

Примером может быть «если солнечно, я выйду на улицу. в противном случае я останусь внутри '

В коде (игнорируя лишние вещи)

if (sunny) {
  goOutside();
}
else {
  stayInside();
}

Вы МОЖЕТЕ использовать операторы «else if», если хотите добавить «дополнительные» условия. Продолжая предыдущий пример, «если будет солнечно, я выйду на улицу. Если будет бурно, я пойду в подвал, иначе я останусь внутри»

В коде

if (sunny) {
  goOutside();
}
else if (stormy) {
  goDownstairs();
}
else {
  stayInside();
}

РЕДАКТИРОВАТЬ раздел:

Вот как вы можете написать несколько ifs и условия. Следующий пример может быть написан как минимум двумя способами:

'Если солнечно и тепло, выходите на улицу. Если солнечно и холодно, ничего не делай "

if (sunny) {
   if (warm) {
     goOutside();
   }
   else if (cold) {
     doNothing();
   }
}

OR

if (sunny && warm) {
   goOutside();
}
else if (sunny && cold) {
   doNothing();
}
9 голосов
/ 17 сентября 2009

Там нет "else if". У вас есть следующее:

if (condition)
    statement or block

Или:

if (condition)
    statement or block
else
    statement or block

В первом случае оператор или блок выполняется, если условие истинно (отличается от 0). Во втором случае, если условие истинно, выполняется первый оператор или блок, в противном случае выполняется второй оператор или блок.

Итак, когда вы пишете "else if", это "else statement", где вторым оператором является оператор if. У вас могут возникнуть проблемы, если вы попытаетесь сделать это:

if (condition)
    if (condition)
        statement or block
else
    statement or block

Проблема здесь в том, что вы хотите, чтобы «else» ссылался на первый «if», но вы на самом деле имеете в виду второе. Вы исправите это, выполнив:

if (condition)
{
    if (condition)
        statement or block
} else
    statement or block
5 голосов
/ 17 сентября 2009

Dead Simple Псевдокод Объяснение:

/* If Example */
if(condition_is_true){
   do_this
}
now_do_this_regardless_of_whether_condition_was_true_or_false

/*  If-Else Example  */
if(condition_is_true){
    do_this
}else{
    do_this_if_condition_was_false
}
now_do_this_regardless_of_whether_condition_was_true_or_false

/* If-ElseIf-Else Example */
if(condition_is_true){
    do_this
}else if(different_condition_is_true){
    do_this_only_if_first_condition_was_false_and_different_condition_was_true
}else{
    do_this_only_if_neither_condition_was_true
}
now_do_this_regardless_of_whether_condition_was_true_or_false
3 голосов
/ 17 сентября 2009

Я думаю, что это помогает думать о «другом» как о слове ИНОЕ.

так что вы читаете это так:

if (something is true)
{
   // do stuff
}
otherwise if (some other thing is true)
{
   // do some stuff
}
otherwise
{
   // do some other stuff :)
}
3 голосов
/ 22 декабря 2010
if (condition)
{
  thingsToDo()..
} 
else if (condition2)
{
  thingsToDoInTheSecondCase()..
}
else
{
  thingsToDoInOtherCase()..
}
2 голосов
/ 17 сентября 2009

Они означают именно то, что они имеют в виду на английском языке.

ЕСЛИ условие истинно, сделать что-то, ИЛИ (в противном случае) ЕСЛИ другое условие верно, сделать что-то, ИЛИ сделать это, когда все остальное не удается .

Обратите внимание, что нет else, если специально конструирует, просто , если и else , но синтаксис позволяет вам размещать else и if вместе, и условность - не вкладывать их глубже, когда вы это делаете. Например:

if( x )
{
    ...
}
else if( y )
{
    ...
}
else
{
    ...
}

Синтаксически идентичен:

if( x )
{
    ...
}
else 
{
    if( y )
    {
        ...
    }
    else
    {
        ...
    }
}

Синтаксис в обоих случаях:

if *<statment|statment-block>* else *<statment|statment-block>*

и , если само по себе является утверждением, так что только синтаксис поддерживает использование , в противном случае, если

2 голосов
/ 17 сентября 2009
if (numOptions == 1)
    return "if";
else if (numOptions > 2)
    return "else if";
else 
    return "else";
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...