问个printf中"%x"的问题
下面是程序员面试宝典中的一道类似题:
#include <stdio.h>
int main()
{
unsigned int a = 0x0000FFFF;
char *b =(char*)&a;
printf("%x\n",a);
printf("%x\n",*b);
}
为啥这个程序输出:
ffff
ffffffff
下边那行为啥会输出8个f?
还有问一下在vs2010下怎样查看内存?
[解决办法]
%x -- 输出16进制格式
char *b =(char*)&a; *b = 0xff,(小端),然或按16进制格式输出 int, 带符号扩展到 32 位, 自然输出8个f
[解决办法]
查看内存的时候只能是在调试的时候才能看到
调试 -> 窗口 -> 内存
[解决办法]
为什么8个f,一个是4位,8个就是32位了,上面的野说了带符号的要扩展到32位,为什么a的是4个f,因为还有4个0在前面,就没有显示出来,我是这么觉得的,我就是不明白为什么b后4个是补的f而不是0。