为什么 while (1 < a < 5) 是一个无限循环?

Why is while (1 < a < 5) an infinite loop?

int a = 2;   
while (1 < a < 5)  {
      printf("%d\n", a);
      a = a + 1;
}

在C程序中,我用过上面的代码,但总是无限计数。这意味着 while 循环的测试条件始终为真。但是我不明白为什么会这样。

1 < a < 5 分组为 (1 < a) < 5.

对于 a1 < a returns 1 (true) 的值,所以现在您的表达式变为 1 < 5,其计算结果始终为 1,这就是为什么你最终会陷入无限循环。

你想要的行为可以通过写while((1 < a) && (a < 5))来获得。

对于 a 的任何值,表达式 1 < a < 51,并且 while (1) 循环。

分组为 (1 < a) < 51 < a01,均小于 5。

你想要1 < a && a < 5吗?