2017-10-22 7 views
-2

次のループは、当社のサンプルCコードの一部に表示されている間:私たちは、私が0になったときにwhileループが終了するので何しばらくの間の差がある(I> 0)および(I)

while (i > 0) 
    printf("We are still in the loop and counting down %d ...\n", i--); 

while (i) 
    printf("We are still in the loop and counting down %d ...\n", i--); 

だから何で可能な結果は、このような変更に起因:として「> 0」、
テストを削除できますか?

question
+5

何i'が負 '場合は? –

+1

'while(i)'は 'while(i!= 0)'を意味し、 'while(i> 0)'とまったく同じではありません。 –

+0

ここに関連コードを記入してください。 – chux

答えて

3

これはiのデータタイプに依存:

while(i)手段:「ループ限りiがゼロでないように」。 while(i>0)は、「iがゼロでも負でもない限り、ループする」ことを意味します。

i場合はそうwhile(i)while(i>0)が同じ意味を持っていることは否定することはできませんunsignedデータ型の変数です。

iただし、signedまたは浮動小数点変数の場合、これは当てはまりません。しかしiは明らかにマイナスになることはできませんあなたの例では

...

+0

これは理にかなっています!ありがとう! – fggwi369

関連する問題