C语言中printf("y=%#8x\n",y);中的#表示什么?

来源:百度知道 编辑:UC知道 时间:2024/05/27 06:44:37
int y=2456;
printf("y=%#8x\n",y);
输出:**0x5ba0 (*代表空格)
为什么呢???

对于%x,%o等特别的进制,当%后加#再接其它格式字符时,表示带格式输出。
即在输出中,加上各自的进制标识。
其中,%x格式加#后,会在输出前加0x。而%o在加#后,会在输出前加0。
比如printf("%x",0x1234);
会输出1234。
而printf("%#x",0x1234);
则会输出0x1234。

#8x 的 # 代表打出16进制 标志 0x
8x -- 8 位 16进制

# 与不同的输出格式 x,o,e,E,G,... 组合,有不同的意思。