|  | 
 
| 
C语言程序如下:
x
马上注册,结交更多好友,享用更多功能^_^您需要 登录 才可以下载或查看,没有账号?立即注册  #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;
}
 | 
 |