当我执行这两行时:
printf("%.5d\n", 3); // use of precision filed
printf("%05d\n", 3); // use of 0 flag to prepend with 0
我得到以下输出:
00003
00003
同样的结果
所以我想知道整数类型的精度字段是什么意思
答案 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