0
int i;
for(i=0; i<10;)
{
i=i++;
printf("Hello\n");
}
次のコードは無限ループに実行されています。誰も私がなぜそれを理解するのを助けることができますかポストインクリメント演算子forループを無限ループに実行
int i;
for(i=0; i<10;)
{
i=i++;
printf("Hello\n");
}
次のコードは無限ループに実行されています。誰も私がなぜそれを理解するのを助けることができますかポストインクリメント演算子forループを無限ループに実行
次のように動作する行i = i ++による無限ループです。 (i = 1とする)
1) 'i'は1だけ増加する。(So i = 2)
2)i ++の値、すなわち増分前の値が 'i'に割り当てられる。 (i = 1)
したがって、 'i'の値は変更されません。条件 'i < 10'は決して偽ではないため、無限ループになります。
しかし、それはポストインクリメント演算子であるため、最初に 'i'は1に割り当てられます。次に 'i'は2に増分する必要がありますか? –
@ Viswa Sairaman:インクリメント演算子は代入演算子よりも_precedence_です。したがって、 'i'が1の場合、増分が最初に行われます。これは 'i'が2になり、 'i ++'が1を返し、 'i'に割り当てられて1になります。 –