Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Прояснение if-else if
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему > Программирование
Jenya7
Смотрю чужой алгоритм и понемногу схожу с ума.
В связи с этим вопрос. Выполниться ли второе условие. То есть увидим ли мы Func2().
Код
a=8;
if (a>1)
{
  Func1();
}
else if (a > 100)
{
   Func2();
}
alexunder
Цитата(Jenya7 @ Jun 7 2015, 08:35) *
В связи с этим вопрос. Выполниться ли второе условие. То есть увидим ли мы Func2().


второе условие не выполнится, т.к. else подразумевает варианты a<1, а случай a>100 попадает под первый if.
Wurger
Цитата(Jenya7 @ Jun 7 2015, 12:35) *
Выполниться ли второе условие.

Нет конечно.
Jenya7
то есть второе условие никогда не исполниться, потому что первым всегда исполниться первое?
то есть тут принцип switch-case?
iosifk
Цитата(Jenya7 @ Jun 7 2015, 10:33) *
то есть второе условие никогда не исполниться, потому что первым всегда исполниться первое?
то есть тут принцип switch-case?

Это смотря как... Если начальник прикажет, то выполняться будут оба условия. А если ему не докладывать, то только первое... Или скажем он втихаря от Вас переназначит "а"... Где-то в другом месте... Или устроит прерывание после первой строки и там это "а" изнасилует... В жизни чего только не бывает, поверьте...
Jenya7
спасибо всем. понял.
demiurg_spb
Цитата(iosifk @ Jun 7 2015, 10:43) *
Какие Вы ужасы рассказываете)))
l1l1l1
Цитата(Jenya7 @ Jun 7 2015, 09:35) *
...
В связи с этим вопрос. Выполниться ли второе условие. То есть увидим ли мы Func2().
Код
a=8;
if (a>1)
{
  Func1();
}
else if (a > 100)
{
   Func2();
}

пока мы не видим, какие действия над a производит Func1(), вопрос не имеет смысла.
gerber
Цитата(l1l1l1 @ Jun 7 2015, 14:31) *
пока мы не видим, какие действия над a производит Func1(), вопрос не имеет смысла.

Какие бы действия Func1() ни произвела с a - в ветку else уже входа не будет, соответственно, не будет проверки второго условия и входа в Func2().
Единственный вариант выполнить Func2() - это дважды изменить а где-то вне этой ветки, в прерывании, например. Первый раз между присвоением a=8; и проверкой условия (а должно стать <= 1) и второй раз строго между входом в ветку else и проверкой второго условия (а должно стать > 100). Это практически невероятное поведение.
l1l1l1
Цитата(gerber @ Jun 7 2015, 13:44) *
Какие бы действия Func1() ни произвела с a - в ветку else уже входа не будет, соответственно, не будет проверки второго условия и входа в Func2().
Единственный вариант выполнить Func2() - это дважды изменить а где-то вне этой ветки, в прерывании, например. Первый раз между присвоением a=8; и проверкой условия (а должно стать <= 1) и второй раз строго между входом в ветку else и проверкой второго условия (а должно стать > 100). Это практически невероятное поведение.
да, вы всё верно написали, я был неправ.
jcxz
Цитата(l1l1l1 @ Jun 7 2015, 16:31) *
пока мы не видим, какие действия над a производит Func1(), вопрос не имеет смысла.

Вы не правы. Пока мы не видим, что из себя представляет a, вопрос не имеет смысла rolleyes.gif
a может быть например экземпляром класса с перегруженными операторами сравнения и поведение их может быть каким угодно, в том числе и верным может быть условие: а <= 1 && a > 100
l1l1l1
Цитата(jcxz @ Jun 7 2015, 18:38) *
Вы не правы. Пока мы не видим, что из себя представляет a, вопрос не имеет смысла rolleyes.gif ...
вы тоже правы.
и хотелось бы точно знать, на каком именно ЯВУ написан код, и для какого компилятора.
а то мало ли что... rolleyes.gif
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.