格式化整数时printf中的精度字段

时间:2017-06-06 15:37:48

标签: c printf

当我执行这两行时:

printf("%.5d\n", 3);  // use of precision filed
printf("%05d\n", 3);  // use of 0 flag to prepend with 0

我得到以下输出:

00003
00003

同样的结果

所以我想知道整数类型的精度字段是什么意思

1 个答案:

答案 0 :(得分:4)

对于%d,精度是要打印的最小位数。

来自man page

  

精度

     

可选的精度,以句点('。')的形式后跟   可选的十进制数字字符串。而不是十进制数字   字符串一可以写“*”或“* m $”(对于某些十进​​制整数m)   指定精度在下一个参数中给出,或者在下一个参数中给出   第m个参数,必须是int类型。如果   精度仅为'。',或精度为负,即   精度为零。 这给出了最小数量   为d,i,o,u,x和X转换显示的数字,数量   在a,a,e,E,f和F的基数字符后出现的数字   转换次数,g和G的最大有效位数   转换或要打印的最大字符数   用于s和S转换的字符串。

对于正值,这与为字段宽度和0标志提供相同的值相同。如果值为负数,则负号将占据宽度%05d中的一个字符。

printf("%.5d\n", -3);  // use of precision filed
printf("%05d\n", -3);  // use of 0 flag to prepend with 0

输出:

-00003
-0003