0

プログラムの出力:

#include <stdio.h>

int main()
{
    int size;

    printf("Enter the size of array: ");
    scanf("%d",&size);

    int b[size],i = 0;
    printf("Enter %d integers to be printed: ",size);
    while(i++ < size)
    {
        scanf("%d",&b[i]);
        printf("%d     %d\n", i, b[i]);
    }
    return 0;       
}

size = 5入力番号 :

0    1    2    3    4

1    0
2    1
3    2
4    3
5    4

ここで、最初の列はiarray の要素用で、2 番目の列は ですb。ループに入る前にループ内でインクリメントされる
ことは明らかです。このループは at/of で値を保存/出力する必要がありますが、ループが at で終了するためではありません。このコードはどのように値を出力していますか? 別の配列でテストしましたが、ガベージ値は出力されていません。iwhile(i++ < size) {1b[1], b[2], b[3], b[4]b[5]i = 5
b[5]
size

4

3 に答える 3

2

配列を読み書きすると、プログラムは未定義の動作を引き起こします。クラッシュしたり、ガベージ値を出力したりする必要あるという意味ではなく、正常に動作しているふりをすることができます。どうやら、それがこの場合に起こっていることです。

于 2013-07-01T20:42:44.363 に答える
1

whileの代わりにforサイクルを使用できるので、代わりにそれを使用して問題を解決することができます:)while(i++<size)for(i = 0; i < size; i++)

于 2013-07-01T23:39:15.620 に答える