これは私のコードです
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 ではなく別の値が出力されることです。
いくつかは私を助けます
char型の配列があります。char のサイズは 1 バイトなので、-128 から 127 までの値に適合します。それより大きい値はオーバーフローします。より大きな値を保存したい場合は、別の型を使用してください - short、int、必要に応じて long long です。
うーん、このコードはかなりのレベルで間違っているようです。
数値を文字列としてスキャンし、使用せずに整数に割り当てていstoi()
ます。array[1]
したがって、スキャンする白黒と数値が同じになる唯一のことはa
、それらのバイナリ表現がある程度 (最大 1 バイト) 一致することです。
10 桁の数字をスキャンする場合は、次を使用します。
long long int a;
scanf("%10lld", &a);
いくつかのエラーがあります:
入力した内容を印刷したい場合は、次のようにしてください。
printf("a = %d\n", a);
ただし、本当に配列に何かを入れたい場合は、いくつかのことについて話しましょう...
まず、配列のインデックスは 0 であるため、 の代わりにarray[1] = a
、「array[0] = a」を実行します。
int
第 2 に、これは (ほとんどの場合 32 ビット) をchar
(ほとんどの場合 8ビット) にキャストしています。したがって、その中に入れることができる最大量は です255
(実際には、これは少し混乱する可能性があります... 標準では がであるかchar
であるsigned
かが指定されていませんunsigned
。したがって、最大量は実際には127
! になる可能性があります)。
最終目標が何であるかを説明していただければ、さらに拡張できます。