0

これは私のコードです

 int a;
char array[10];

printf("Enter a number \n");
scanf("%d", &a);
array[1] = a;


printf("array = %d\n",array[1]);

問題は、たとえば 12345 のように 4 より大きい数値を入力すると、12345 ではなく別の値が出力されることです。

いくつかは私を助けます

4

5 に答える 5

5

char型の配列があります。char のサイズは 1 バイトなので、-128 から 127 までの値に適合します。それより大きい値はオーバーフローします。より大きな値を保存したい場合は、別の型を使用してください - short、int、必要に応じて long long です。

于 2013-10-30T11:46:52.133 に答える
0

うーん、このコードはかなりのレベルで間違っているようです。

数値を文字列としてスキャンし、使用せずに整数に割り当てていstoi()ます。array[1]したがって、スキャンする白黒と数値が同じになる唯一のことはa、それらのバイナリ表現がある程度 (最大 1 バイト) 一致することです。

10 桁の数字をスキャンする場合は、次を使用します。

long long int a;
scanf("%10lld", &a);
于 2013-10-30T11:49:23.680 に答える
0

いくつかのエラーがあります:

入力した内容を印刷したい場合は、次のようにしてください。

printf("a = %d\n", a);

ただし、本当に配列に何かを入れたい場合は、いくつかのことについて話しましょう...

まず、配列のインデックスは 0 であるため、 の代わりにarray[1] = a、「array[0] = a」を実行します。

int第 2 に、これは (ほとんどの場合 32 ビット) をchar(ほとんどの場合 8ビット) にキャストしています。したがって、その中に入れることができる最大量は です255(実際には、これは少し混乱する可能性があります... 標準では がであるかcharであるsignedかが指定されていませんunsigned。したがって、最大量は実際には127! になる可能性があります)。

最終目標が何であるかを説明していただければ、さらに拡張できます。

于 2013-10-30T11:49:04.150 に答える