输入的是字符小写a,存储的值缺为-13215,不应当是97吗?
-13215在计算机中存储为11001100 01100001
97为1100001
没毛病,%c只用了一个字节,也就是01100001,后面那个是随机值。
纠正你下,-13215在计算机中存储为11001100 01100001,这个在big endian计算机上才是这样,咱们的PC是little endian的,存储字节顺序是低位在前,因此是
01100001 11001100
1字节占八位,所以存储八位
答:short数据占用2个字节,而char字符占用1字节,读入字符'a'的时候只覆盖了u变量的低位1字节,高位字节仍然是有数据的为11001100,所以最终显示不一样。
方法1:初始化的时候给u赋初值0,这样高位数据为0就不会影响输出结果.
#include <stdio.h>
int main()
{
short u=0;
printf("short占用字节数为: %d Byte\n", sizeof(short));
printf("请输入一个字符:");
scanf("%c", &u);
printf("\n您输入的字符为:%c\n", u);
printf("该字符对应的ASCII码为:%d\n", u);
return 0;
}
方法2:直接将u定义为char型数据
#include <stdio.h>
int main()
{
char u;
// printf("short占用字节数为: %d Byte\n", sizeof(short));
printf("请输入一个字符:");
scanf("%c", &u);
printf("\n您输入的字符为:%c\n", u);
printf("该字符对应的ASCII码为:%d\n", u);
return 0;
}