int a;
char array[10];
printf("Enter a number \n");
scanf("%d", &a);
array[1] = a;
printf("array = %d\n",array[1]);
问题是,如果我输入一个大于4的数字,例如12345,那么它将打印其他内容而不是12345
有些人帮助我答案 0 :(得分:5)
你有char类型的数组。 char的大小是1个字节,因此它适合-128到127的值。任何更大的值都会溢出。如果你想存储更大的值,可以使用不同的类型 - short,int,如果需要也可以长。
答案 1 :(得分:1)
为什么要将int存储到char数组中.. a
的大值将溢出..
如果您在代码中解释您要执行的操作,我们可以为您提供更多帮助..因为我认为您没有任何理由将int
存储到char
数组中
答案 2 :(得分:1)
我认为你错过了几件事。
首先:数组从索引[0]开始 - 有没有理由从索引1开始?
其次,正如其他人指出的那样,char
数组(即-128到127之间的数字)不会存储该范围之外的数字。
第三,我认为你想要的是将二进制数a
转换为字符串array
。为此,您需要使用sprintf()
(在C的情况下,或在C ++的情况下为itoa
):
#include<stdio.h>
int main() {
int a;
char array[10];
printf("Enter a number \n");
scanf("%d", &a);
sprintf(array,"%d",a);
printf("array = %s\n",array);
}
答案 3 :(得分:0)
您有一些错误:
因此,如果您要打印输入的内容,请尝试以下操作:
printf("a = %d\n", a);
但是,如果你真的想开始把东西放到数组中,那就谈谈几件事......
首先,数组是0索引的,所以不是array[1] = a
,而是`array [0] = a'
其次,这是向int
(最可能是8位)投射char
(最有可能是32位)。因此,您可以拥有的最大金额为255
(实际上这可能会有点混乱......标准没有说明char
是signed
还是unsigned
因此,max可能实际上是127
!)。
如果你解释一下你的最终目标是什么,我可以进一步扩展。
答案 4 :(得分:0)
您正在将数字扫描为字符串,然后在不使用stoi()
的情况下将其分配给整数。所以唯一不同的是b / w array[1]
和你扫描的数字,a
将是他们的二进制表示在某种程度上匹配(最多1个字节)。
如果您正在扫描10位数字,只需使用:
long long int a;
scanf("%10lld", &a);