私はCのスターターであり、ちょうどプログラミングの基礎を学んだだけです。私がコーディングを練習したとき、予期せぬ出力について何か不思議なことに気がつきました。私はその理由を知らず、問題の内容を説明することすらできません。Cコード - 出力が私のコードで予期しない値を返したのはなぜですか?
#include "stdio.h"
#include "stdlib.h"
#include "string.h"
int main()
{
int numberEntered = 0;
int index = 0;
char input[32];
int TotalNum = 0;
int x = 1;
int array[x];
printf("Please enter the size of the array: ");
fgets(input,32,stdin);
x = atoi(input);
for(index =0; index < x; index++)
{
printf("\nPlease enter your number:");
fgets(input,32,stdin);
numberEntered = atoi(input);
printf("The number you entered is : %d\n",numberEntered);
array[index] = numberEntered;
TotalNum ++;
}
for(index = 0; index < TotalNum; index++)
{
printf("array[%d] = %d\n",index,array[index]);
}
return 0;
}
ユーザ入力にx = 15;ユーザーは1から15までの数字を入力します。 出力されました:
array[0] = 1
array[1] = 2
array[2] = 3
array[3] = 4
array[4] = 5
array[5] = 6
array[6] = 7
array[7] = 668977
array[8] = 9
array[9] = 10
array[10] = 11
array[11] = 12
array[12] = 13
array[13] = 14
array[14] = 15
私はもともと数が「8」は、ユーザーが入力した内容であるため、配列は[7]、私の配列[7] = 8の出力を与える必要があることを期待しています。しかし、それは乱数に変わった。私はその理由を知りたいです。
'int型のx = 1を大きな値を取得しようとしているとき。 int array [x]; ' - 配列を作成するときの大きさはどれくらいですか?後で 'x'を変更しても、配列は魔法のように成長しません。 –