これが何を意味するのかを知るために、インターネット全体を検索しました。
while(i++)
これに似たコードをたくさん見てきました。while ループの状態にインクリメントは何を返しますか?
これが何を意味するのかを知るために、インターネット全体を検索しました。
while(i++)
これに似たコードをたくさん見てきました。while ループの状態にインクリメントは何を返しますか?
コンストラクトi++
は 2 つのことを行います。変数 の現在の値を評価しi
、格納されている値を 1 増やします。したがって、i
が に等しい-1
場合、 の場合、 はwhile(i++)
にi++
評価され-1
、これは (非ゼロである) 真であり、 にインクリメントi
され0
、ループ本体が実行され、次の反復でi++
ゼロに評価されて にインクリメントi
され1
、ゼロは にインクリメントされます。 false の場合、while
終了し、それを超えて実行が続行されます。
インクリメントはwhileループ条件に何も返しません。変数の値i
は最初に真であることがチェックされ、次にインクリメントされます。
true は、 と等しくないものを意味し0
ます。
ではwhile( i++ )
、 の値が のi
条件として評価されwhile
、その後i
が増分され1
ます。これはCではポスト インクリメントと呼ばれ、副作用があります。
例、
i = 1;
while( i++ ) // same as while( i ),
// side-effect is `i` incremented by 1 after this
// now i is 2
インクリメント演算子の詳細については、この質問を参照してください。
このコードを試すことができます:
#include"stdio.h"
int main()
{
int i = -3;
while(i++)
printf("NUM I IS: %d\n",i);
i = -3;
printf("\n");
while(++i)
printf("NUM I IS: %d\n",i);
return 0;
}
結果は次のとおりです。
NUM I IS: -2
NUM I IS: -1
NUM I IS: 0
NUM I IS: -2
NUM I IS: -1
2 番目のループは 2 回だけ実行されますが、最初のループは 3 回実行されます。
そう
while(i++)
==>
while(i)
{
i = i +1;
...
}
と
while(++i)
==>
while( i = i+1)
WHILE
loop は と の 2 つだけを理解TRUE
しFALSE
ます。
TRUE
= 0 以外の任意の値
FALSE
=0
条件が true の場合、ループはそれ以外の場合に実行され、終了します。
あなたの場合、あなたWHILE(i++)
は i の値をインクリメントし続けることを意味し、取得するまでループが続くと言います0
例:
i= -2;
WHILE(i++)
{
condition
}
最初のループでは、i の値-2
は true になります。条件が実行され、i がインクリメントされます。したがって、i の値は次のようになります。-2+1 = -1
2 番目のループでは、i の値-1
は true になります。条件が実行され、i がインクリメントされます。したがって、i の値は次のようになります。-1+1 = 0
3 番目のループでは、i の値0
は false になります。したがって、ループは終了します。