我知道雖然(1)是一個無限循環,但是(i)是什麼意思?while(i)做什麼?
int i=5;
...
while(i)
{
i=i-1;
printf("%d\n", i);
}
最後打印數字「0」。我不明白的是爲什麼這不是一個無限循環,爲什麼它停在0?
我知道雖然(1)是一個無限循環,但是(i)是什麼意思?while(i)做什麼?
int i=5;
...
while(i)
{
i=i-1;
printf("%d\n", i);
}
最後打印數字「0」。我不明白的是爲什麼這不是一個無限循環,爲什麼它停在0?
由於0
的計算結果爲false
而停止。
它含蓄地表示while (i!=0)
。所以基本上你的代碼相當於
int i=5;
...
while(i!=0)
{
i=i-1;
printf("%d\n", i);
}
它解釋了它的行爲。
所有非零整數被解釋爲true
,並且0
被解釋爲false
。如果這在C(而不是C++)中,那麼實際上並沒有實際的內置布爾文字true
和false
。 C中的假值由整數零表示,真值由非零整數表示。
零表示False,任何非零(即使是浮點數)值都表示爲真。
考慮一下:
float i=5.5;
...
while(i)
{
i=i-1.5;
printf("%d\n", i);
}
這也適用,即使它不是一個整數。 所以,雖然(i)只是意味着while(i!= 0)