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