我知道 while(1) 是一个无限循环,但 while(i) 到底是什么意思?
int i=5;
...
while(i)
{
i=i-1;
printf("%d\n", i);
}
最后,将打印数字“0”。我不明白的是为什么这不是一个无限循环,为什么它停在 0?
我知道 while(1) 是一个无限循环,但 while(i) 到底是什么意思?
int i=5;
...
while(i)
{
i=i-1;
printf("%d\n", i);
}
最后,将打印数字“0”。我不明白的是为什么这不是一个无限循环,为什么它停在 0?
它停止,因为0
计算结果为false
。
零表示 False,任何非零(偶数浮点数)值表示 True。
考虑一下:
float i=5.5;
...
while(i)
{
i=i-1.5;
printf("%d\n", i);
}
即使它不是整数,这也有效。所以,while(i) 只是意味着 while(i!=0)
它隐含的意思是while (i!=0)
。所以基本上你的代码相当于
int i=5;
...
while(i!=0)
{
i=i-1;
printf("%d\n", i);
}
这解释了它的行为。
所有非零整数都被解释为true
,并被0
解释为false
。如果这是在 C(而不是 C++)中,那么实际上实际上并没有内置的布尔文字true
, 和false
. C 中的假值由整数零表示,真值由非零整数表示。