2013-10-11 83 views
0

我知道雖然(1)是一個無限循環,但是(i)是什麼意思?while(i)做什麼?

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

最後打印數字「0」。我不明白的是爲什麼這不是一個無限循環,爲什麼它停在0?

回答

6

由於0的計算結果爲false而停止。

0

它含蓄地表示while (i!=0)。所以基本上你的代碼相當於

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

它解釋了它的行爲。

0

所有非零整數被解釋爲true,並且0被解釋爲false。如果這在C(而不是C++)中,那麼實際上並沒有實際的內置布爾文字truefalse。 C中的假值由整數零表示,真值由非零整數表示。

1

零表示False,任何非零(即使是浮點數)值都表示爲真。

考慮一下:

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

這也適用,即使它不是一個整數。 所以,雖然(i)只是意味着while(i!= 0)