2016-12-06 8 views
-1

C-ためのループ奇妙な

for(;i;) 

for(;;) 

は、Cプログラミングで何を意味するのでしょうか?

for(;i;) 
printf("hjj"); 

上記のプログラムではどうなりますか?

int i=1; 
for(;;) 

コンパイラはループに入りますか?

答えて

4

for(;;)は無限ループです。 iの値が0になると、for(;i;)が終了します。あなたのケースでは

int i=1; 
for(;;) 

ためには、ループのうち内側のブロックの切れ目まで無限ループになります。

1

レッツ・ブレークダウンfor文は(C standard 6.8.5.3参照):

for (clause-1 ; expression-2 ; expression-3) statement 

あなたが初期化の文を省略している

for(;;) 

に( 句-1)とループボディの式( 式-3)ですが、私はこれらが操作を意味していないことを明確にしていると思います。

制御部は中間の式-2です。この式は、各繰り返しの開始時にtrueまたはfalseに評価されます。真と評価された場合、次の反復が実行されます。今私は戻ってthe standardに行く:

あなたはおそらく知っているように、

Anは表現-2がゼロ以外の定数に置き換えられを省略。」「ゼロでない定数は」真偽値trueと評価します。従って:

for (;;) 

から同等ある:

while (1) 

ので、ループがbreak実行または(<CTRL>C等)、外部割り込みが介在されていない限り、無限ループを反復し続けます。

for(;i;) 

iの値によって異なります。

ので、さらなるステップがあること取ります。 iがゼロでない場合、再び無限ループになりますが、iがゼロ(偽)ならループはまったく反復しません。

+1

詳細な説明をいただきありがとうございます、私の考えをクリアしました:) –