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