-3
main()
{
int i;
int a[5];
for (i = 1; i <= 5; i++)
    a[i] = 0;
printf("Hello, how are you? ");
}

プログラムがループから抜け出せないのはなぜですか?

4

6 に答える 6

14

C 配列はゼロから始まるため、[1..5] ではなく [0..4] のインデックスを使用する必要があります。

a[5]配列の境界を超えて書き込みます。これには未定義の結果があります。あなたの場合、これはたまたまi0にリセットされたループカウンターのアドレスです。

を使用してこれを修正できます

for (i = 0; i < 5; i++)

または、より良い、

for (i = 0; i < sizeof(a)/sizeof(a[0]); i++)

あなたのループとして。

于 2012-12-27T12:51:35.150 に答える