|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
C语言程序如下:
#include<stdio.h>
int main()
{
int a;
unsigned int b;
short c;
scanf("%d%u%d",&a,&b,&c);
printf("a=%d\nb=%u\nc=%d\n",a,b,c);
return 0;
}
输入a=10,b=3,c=8,最后运行结果是a=10,b=0,c=8,为什么b会是0呢??
改成这样就可以了,原因是c是short,但是你用了%d, 这样会默认占用4个字节,
你应该是小段字节序的电脑, 即低位字节在前,高位字节在后, 假设c占用0-1,b,2-5,a,6-9
读入b的数据时候内存位置2的位置写入3,位置3-5都是0,即03 00 00 00,
但是scanf读入c的时候用了4字节,这样c占用了0-3这4个字节, 写入了8之后0-3的内容变成了08 00 00 00,
内存位置2 3就都写成0了, 这样导致了b成0
- #include<stdio.h>
- int main()
- {
- int a;
- unsigned int b;
- short c;
- scanf("%d%u%hd",&a,&b,&c);
- printf("a=%d\nb=%u\nc=%hd\n",a,b,c);
- return 0;
- }
复制代码
|
|