Страницы

Поиск по вопросам

четверг, 28 ноября 2019 г.

Как работает оператор else if и в чем отличие от if?

#любой_язык #условия


Чем отличается оператор else if от обычного if ? 

Цепочка операторов из if-else if

if (condition)
    statement;
else if (condition)
    statement;
else if (condition)
    statement;


Цепочка операторов из if

if (condition)
    statement;
if (condition)
    statement;
if (condition)
    statement;


Есть ли между ними разница в работе?
    


Ответы

Ответ 1



Достаточно рассмотреть простой пример, чтобы понять, в чем заключается разница. int x = 0; if ( x == 0 ) { System.out.printline( "x = " + x ); ++x; } else if ( x == 1 ) { System.out.printline( "x = " + x ); ++x; } else if ( x == 2 ) { System.out.printline( "x = " + x ); ++x; } Вывод на консоль будет x = 0 А если этот код переписать в виде if ( x == 0 ) { System.out.printline( "x = " + x ); ++x; } if ( x == 1 ) { System.out.printline( "x = " + x ); ++x; } if ( x == 2 ) { System.out.printline( "x = " + x ); ++x; } то вывод на консоль будет x = 0 x = 1 x = 2 То есть в первом случае предложения if выполняются в зависимости от условий, а во втором случае они выполняются безусловно, то есть не зависит от выполнения предыдущих if предложений.

Ответ 2



Есть. Формат if/else if гарантирует, что при выполнении какого-либо из условий блоки с другими условиями не будут выполнены. При использовании цепочки if это не гарантируется. Например: int a = 10; if( a > 1 ) System.out.println( "Переменная 'a' больше 1" ); if( a > 5 ) System.out.println( "Переменная 'a' больше 5" ); Будут выполнены оба блока, и выведется: Переменная 'a' больше 1 Переменная 'a' больше 5

Ответ 3



Как такового оператора else if нет, это лишь использование ещё одного if в ветке else другого if. Но разница между ними есть. В первом случае второе условие отработает, если не отработает первое, а третье - если не отработает второе. Во втором случае отработают все условия (если где-то не возникнет, скажем, исключение). НО. Судя по вашему коду, условия у вас одинаковые. Поэтому в первом случае сработает тоьлко первый if или не сработает ничего. А во втором либо сработают все три if, либо не сработает ничего

Ответ 4



Во втором случае у вас проверяются всегда все условия. В первом случае если выполнится первое условие остальные уже не проверяются

Ответ 5



Вообще, конструкция if (condition) statement; else if (condition) statement; else if (condition) statement; чаще всего применяется, когда нужно в зависимости от того, чему равно проверяемое значение, выполнить несколько вариантов действий. И вообще по-идее в таких ситуациях нужно пользоваться оператором ветвления (switch\case\select и т.д). Но во многих языках он обладает неприятными ограничениями, которые заставляют пользоваться вышеупомянутой конструкцией. Зачем вставлять else, если логика последующих if такова, что проверку пройдёт только один? Чтобы избежать лишних проверок и явно указать читателю исходного кода, что здесь реализован по сути оператор ветвления. В некоторых языках реализован специальный оператор elseif\elsif\elif позволяющий избегать лишнего вложения блоков.

Ответ 6



В if вы даёте условие и если оно не выполняется можете вызвать else . Но в случаях когда нужно проверять условие одно за одним можно использовать конструкцию else if . И тогда в else if вы вписание ещё одно условие . int x = 1; if(x==3){ System.out.println("Это число 5");//к сожелению не выведет }else if(x==2){ System.out.println("Это число 2");//к сожелению не выведет }else if(x==1){ System.out.println("Это число 1");//выведет вот это }else { System.out.println("Число вообще не ходит"); }

Ответ 7



Так же можно воспользоватся оператором множественного выбора switch(). int value; cin >> value; switch(value){ case 1: return value+1; case 2: return value+2; default: return value; }

Ответ 8



Да, в else-if варианте переход к следующей ветке происходит только тогда, когда предыдущая дала результат false. int a = 1 int b = 2 int c = 3 if (a == 1) statement; else if (b == 2) statement; // эта ветка не будет выполнена else if (c == 3) statement; // эта ветка не будет выполнена Если Вы уберете все else-if, все три ветки будут выполнены. Поэтому else-if используется как последовательность, которая должны быть проверена, если предыдущая дала неверный результат.

Комментариев нет:

Отправить комментарий