奇怪 C语言问题

来源:百度知道 编辑:UC知道 时间:2024/05/14 06:25:52
main()
{
int x;
scanf("%c",&x);
printf("%d",x);
}
结果:当我输入"a"的时候就输出:-858993567.为什么不是97?

代码改为:
main()
{
char x;
scanf("%c",&x);
printf("%d",x);
}
结果:输入"a" 输出:97 为什么又可以了?一定要char吗?

代码再改为:
main()
{
int x;
x='a';
scanf("%c",&x);
printf("%d",x);
}
结果:输入"a" 输出:97 再输入"b" 则输出:98 为什么?
难道第一断代码没有给x分配空间?

代码再改为:
main()
{
char x;
scanf("%d",&x);
printf("%c",x);
}
结果:输入97 输出:a 这为什么又可以?
不是说char与int可以通用吗?
main()
{ int x;
scanf("%d",&x);
printf("%c",x);
} 结果:输入97 输出:a
难道int型的变量,用scanf输入里不能用%c??
好奇怪???????????请大家指点一下..好乱现在..谢了

main()
{
int x;
scanf("%c",&x);
printf("%d",x);
}
因为在32位系统中,整型变量占4个字节,char型变量占1个字节
所以用字符型给整型赋值时只能给最低的字节赋值,
其余的字节由编译器赋值为默认值,所以输出为未初始化的一个值

main()
{
char x;
scanf("%c",&x);
printf("%d",x);
}
因为X是char型,输入a,%d输出时转换成a的ASCII码

main()
{
int x;
x='a';
scanf("%c",&x);
printf("%d",x);
}
定义变量时会给变量一个地址,地址里面存放的就是它的值,用scanf再次赋值时会把原值覆盖

就答到这吧,int和char不是通用的,char型变量可以当int型用,是因为char变量当int变量用时会自动转换成其ASCII吗
有什么问题继续留言吧

我也研究C这个问题的确够怪的,顶一下。