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);
}
これはその動作を説明しています。