为什么 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
.
对于 a
、1 < a
returns 1
(true) 的值,所以现在您的表达式变为 1 < 5
,其计算结果始终为 1
,这就是为什么你最终会陷入无限循环。
你想要的行为可以通过写while((1 < a) && (a < 5))
来获得。
对于 a
的任何值,表达式 1 < a < 5
是 1
,并且 while (1)
循环。
分组为 (1 < a) < 5
,1 < a
为 0
或 1
,均小于 5。
你想要1 < a && a < 5
吗?
int a = 2;
while (1 < a < 5) {
printf("%d\n", a);
a = a + 1;
}
在C程序中,我用过上面的代码,但总是无限计数。这意味着 while 循环的测试条件始终为真。但是我不明白为什么会这样。
1 < a < 5
分组为 (1 < a) < 5
.
对于 a
、1 < a
returns 1
(true) 的值,所以现在您的表达式变为 1 < 5
,其计算结果始终为 1
,这就是为什么你最终会陷入无限循环。
你想要的行为可以通过写while((1 < a) && (a < 5))
来获得。
对于 a
的任何值,表达式 1 < a < 5
是 1
,并且 while (1)
循环。
分组为 (1 < a) < 5
,1 < a
为 0
或 1
,均小于 5。
你想要1 < a && a < 5
吗?