0

我知道 while(1) 是一个无限循环,但 while(i) 到底是什么意思?

int i=5;
...
while(i)
{
i=i-1;
printf("%d\n", i);
}

最后,将打印数字“0”。我不明白的是为什么这不是一个无限循环,为什么它停在 0?

4

4 回答 4

6

它停止,因为0计算结果为false

于 2013-10-11T00:53:05.283 回答
1

零表示 False,任何非零(偶数浮点数)值表示 True。

考虑一下:

float i=5.5;
...
while(i)
{
  i=i-1.5;
  printf("%d\n", i);
}

即使它不是整数,这也有效。所以,while(i) 只是意味着 while(i!=0)

于 2013-10-11T01:12:43.190 回答
0

它隐含的意思是while (i!=0)。所以基本上你的代码相当于

int i=5;
...
while(i!=0)
{
i=i-1;
printf("%d\n", i);
}

这解释了它的行为。

于 2013-10-11T00:54:51.313 回答
0

所有非零整数都被解释为true,并被0解释为false。如果这是在 C(而不是 C++)中,那么实际上实际上并没有内置的布尔文字true, 和false. C 中的假值由整数零表示,真值由非零整数表示。

于 2013-10-11T00:56:22.907 回答