Почему while (1 <a <5) бесконечный цикл? - PullRequest
0 голосов
/ 02 января 2019
int a = 2;   
while (1 < a < 5)  {
      printf("%d\n", a);
      a = a + 1;
}

В программе на C я использовал приведенный выше код, но он всегда считается бесконечным. Это означает, что условие проверки цикла while всегда верно. Но я не мог понять, почему это происходит.

Ответы [ 3 ]

0 голосов
/ 02 января 2019

1 < a < 5 сгруппирован как (1 < a) < 5.

Для вашего значения a, 1 < a возвращает 1 (true), поэтому теперь ваше выражение становится 1 < 5, которое всегда оцениваетсяв 1, поэтому вы в конечном итоге получаете бесконечный цикл.

Желаемое поведение можно получить, написав вместо него while((1 < a) && (a < 5)).

0 голосов
/ 02 января 2019

Выражение 1 < a < 5 равно 1 для любого значения циклов a и while (1).

Оно сгруппировано как (1 < a) < 5, а 1 < a равно 0 или 1, которые оба меньше 5.

Вы хотели 1 < a && a < 5?

0 голосов
/ 02 января 2019

Цикл работает бесконечно много раз, потому что условие 1

Это может помочь:

int a = 2;

while (a <5) </p>

{

printf ("% d \ n", a);

a = a + 1;

}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...