b是char*型的,属于有符号数,所以有符号数0xf7在printf的作用下输出fffffff7,这是为什么呢
说的很清楚,因为x86是little endian,你的内存是 0xf7 0xff 0xff 0xff
如果输出char,那么只输出第一个,所以是 0xf7
如果是short,那么输出的是内存 0cf7 0xff,也就是 0xfff7
如果是int,那么就是 0xfffffff7
0xf7,在有符号数中表示为-9(十进制),printf()中%08x作用是 要将这2位十六进制数(0xf7) 扩展成8位十六进制来表示-9,自然就是0xfffffff7.