C语言中printf格式解释

#include <stdio.h>

int main()
{
int key = 0x4b5d;
printf("%#02x\n",key);
return 0;
}
如题,求详解格式化字符串中%#02x的意思,#02是什么情况
测试时去掉#02就输出4b5d,带上就输出0x4b5d

  #与0是printf的标志之一,2是修饰符;

  

  # :
  对c,s,d,u类无影响;
  对o类,在输出时加前缀0;
  对x类,在输出时加前缀0x或者0X;
  对g,G 类防止尾随0被删除;
  对于所有的浮点形式,#保证了即使不跟任何数字,也打印一个小数点字符。
  0 :
  对于所有的数字格式,用前导0填充字段宽度,若出现 - 标志或者指定了精度(对于整数),忽 略。
  2:
  字段宽度的最小值,如果该字段不能容纳要打印的数或字符串,系统会使用更宽字段。

  在"%#02x" 中,:
  # 使输出数字前加上 0x ;

  0 说明数字前面要用0填充;
2 说明该输出字段最小长度为2。

因为0x4b5d占了6长度,其实02都不起作用的
若使用"%#09"输出,结果为'0x0004b5d'
若使用”%#9“输出,结果为' 0x4b5d'(前面三空格)
温馨提示:答案为网友推荐,仅供参考
第1个回答  2015-02-08
%x代表以十六进制小写输出
%02x代表以十六进制小写输出,不足2位左补0
%#x代表以十六进制小写输出带小写0x前缀
%#02x代表以十六进制小写输出带小写0x前缀,不足2位左补0本回答被网友采纳
相似回答