关于整型数组中数字使用printf输出的问题

#include
int main(void)
{
int number[40];
scanf("%s", number);
printf("%d", number[0]);
return 0;
}
数字以字符格式存在数组里,既然字符以数字的形式存储,那为何用%d输出是垃圾值呢?用%c却是正常的

c

4个回答

字符格式和整型是不同的,字符0对应着48,字符1对应着整数49....

thetrmite
thetrmite 但是如果我第一个数字是0,它并不会输出48,而是任意值。。。。
接近 5 年之前 回复
  int number[40]; //每个整形变量占4个字节
scanf("%s", number);//按字符串读入,每个字符占1个字节,输入123456,1234存在了number[0]开始的4个字节,65存在了number[1]开始的2个字节
printf("%d", number[1]);//你改为number[1]试试,输出是5

字符‘0’,对应0x30,
\0 对应NUL 控制字符(字符串结束符号)值为0
%d 输出 '0' --->48,\0--->0
%c 输出 ‘0’--->0,\0对应空格或者乱码.

 int number[40]; //每个整形变量占4个字节
scanf("%s", number);//按字符串读入,每个字符占1个字节,输入123456
printf("%d", number[1]);//你改为number[1]试试,输出是5
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐