LINUX.ORG.RU

Как проверяются условия в if?

 ,


0

1

Совсем тупой вопрос. Если у if перечислено несколько условий, объединённых логическим «И», то он бросает проверять остальные уже после несовпадения первого, или проверяет все, а затем идёт дальше? Например, есть код:

if (Telit.WaitResp("RING\n", 256)) {
  for (int count = 2; count <= RingSignalNeed; count++) {
    if (count == RingSignalNeed && Telit.WaitResp("RING\n", 2256) < 0) {//гудков сколько надо и закончились?
      digitalWrite(10, LOW);//размыкаем реле 
    }
    else if (count < RingSignalNeed && Telit.WaitResp("RING\n", 2256) > 0) {//гудков меньше и продолжаются
      count++; //добавляем гудок
      continue; //слушаем дальше
    }
  }
}
То есть если count всё ещё меньше RingSignalNeed, то он не пропустит ли гудок в проверке на равенство этих двух переменных? Собираю gcc-5.1.0.

★★★

Последнее исправление: kostett (всего исправлений: 2)

Если у if перечислено несколько условий, объединённых логическим «И», то он бросает проверять остальные уже после несовпадения первого

This.

CYB3R ★★★★★
()

Всем спасибо!

kostett ★★★
() автор топика
Ответ на: комментарий от nexfwall

Я бы сказал, что логические операторы являются точкой следования.

xecu91
()
Ответ на: комментарий от Waterlaz

А при чем тут знание ассемблера?

Если посмотреть скомпилированный код, то можно увидеть, каким образом проверяются условия в if.

Deleted
()
Ответ на: комментарий от Deleted

Если посмотреть скомпилированный код

А если посмотреть в стандарт, то не надо смотреть в скомпилированный код.

akk ★★★★★
()
Ответ на: комментарий от akk

А если посмотреть в стандарт, то не надо смотреть в скомпилированный код.

Согласен, но непосредственно исполняются не стандарты :)

Поэтому знание ассемблера все-таки не будет лишним.

Deleted
()
Ответ на: комментарий от Deleted

Если компилятор не следует стандарту языка, использовать такой компилятор не нужно.

akk ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.