返回信息流1 #include <stdio.h>
2
3 int
4 main(){
5 unsigned int x;
6 unsigned char b;
7 int i;
8 scanf("%x,%x,%d",&x,&b,&i);
9 printf("%x\n",x);
这是一条镜像帖。来源:北邮人论坛 / cpp / #83302同步于 2014/10/14
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖
求指教,为什么scanf读入的unsigned 不对呢
yikoudreams
2014/10/14镜像同步6 回复
订阅后,新回复会通过你的通知中心匿名送达。
6 条回复
应注意栈是由高地址向低地址生长的,x和b的地址相差一个字节,实际内存为 b 78 56 34 12,如果b被当做32位,后面的78 56 34 被0x000000b中的 00 覆盖。
你好,十分感谢回答。关于您的解答有点疑问,b是unsigned char不是8bit么?
【 在 inaadversity 的大作中提到: 】
: 应注意栈是由高地址向低地址生长的,x和b的地址相差一个字节,实际内存为 b 78 56 34 12,如果b被当做32位,后面的78 56 34 被0x000000b中的 00 覆盖。
【 在 yikoudreams 的大作中提到: 】
: 你好,十分感谢回答。关于您的解答有点疑问,b是unsigned char不是8bit么?
:
没错,但是注意scanf函数,该函数的后3个参数,只是3个指针,scanf函数不会管b是什么类型。
只会从&b地址处填入一个%x类型的32位整数
原来如此,看来自己对函数理解不够。十分感谢[ema23]
【 在 inaadversity 的大作中提到: 】
: 没错,但是注意scanf函数,该函数的后3个参数,只是3个指针,scanf函数不会管b是什么类型。
: 只会从&b地址处填入一个%x类型的32位整数
为什么我的输出是正常的?我用VS2008写的【 在 inaadversity 的大作中提到: 】
: 应注意栈是由高地址向低地址生长的,x和b的地址相差一个字节,实际内存为 b 78 56 34 12,如果b被当做32位,后面的78 56 34 被0x000000b中的 00 覆盖。
【 在 chenxixi 的大作中提到: 】
: 为什么我的输出是正常的?我用VS2008写的【 在 inaadversity 的大作中提到: 】
编译器不一样造成的吧