首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

问个printf中"%x"的有关问题

2012-04-02 
问个printf中%x的问题下面是程序员面试宝典中的一道类似题:#include stdio.hint main(){unsigned int

问个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。

探讨

%x 我明白是输出16进制,但是是输出多少个呢?为啥会输出8个f,而不是别的个数?

引用:
%x -- 输出16进制格式

char *b =(char*)&amp;amp;a; *b = 0xff,(小端),然或按16进制格式输出 int, 带符号扩展到 32 位, 自然输出8个f

热点排行