一定要掌握%x(或%X或%#x或%#X),因为调试的时候经常要将内存中的二进制代码全部输出,然后用十六进制显示出来。下面写一个程序看看它们四个有什么区别:
/* 时间:2014年12月30日19:00:21 目的:测试%x、%X、%#x、%#X的用法 */ # include <stdio.h> int main(void) { int i = 47; printf("%x\n", i); printf("%X\n", i); printf("%#x\n", i); printf("%#X\n", i); return 0; } /*在VC++6.0中的输出结果是: -------------------------------------- 2f 2F 0x2f 0X2F -------------------------------------- */
从输出结果可以看出:如果是小写的x,输出的字母就是小写的;如果是大写的X,输出的字母就是大写的;如果加一个“#”,就以标准的十六进制形式输出。最好是加一个“#”,否则如果输出的十六进制数正好没有字母的话会误认为是一个十进制数呢!总之,不加“#”容易造成误解。但是如果输出0x2f或0x2F,那么人家一看就知道是十六进制。而且%#x和%#X中,笔者觉得大写的比较好,因为大写是绝对标准的十六进制写法。