当我执行这两行时:
printf("%.5d\n", 3); // use of precision filed
printf("%05d\n", 3); // use of 0 flag to prepend with 0
Run Code Online (Sandbox Code Playgroud)
我得到以下输出:
00003
00003
Run Code Online (Sandbox Code Playgroud)
同样的结果
所以我想知道整数类型的精度字段是什么意思
对于%d
,精度是要打印的最小位数。
从手册页:
精度
可选精度,形式为句点 ('.') 后跟可选的十进制数字字符串。代替十进制数字字符串,可以写“*”或“*m$”(对于某些十进制整数 m)来指定精度分别在下一个参数或第 m 个参数中给出,它们必须是类型为 int。如果精度仅以“.”形式给出,或者精度为负,则精度将被视为零。 这给出了 d、i、o、u、x 和 X 转换出现的最小位数,a、A、e、E、f 和 F 转换的基数字符后出现的位数, g 和 G 转换的最大有效位数,
对于正值,这与为字段宽度和0
标志提供相同的值相同。如果值为负,则负号将占用%05d
.宽度的一个字符。
printf("%.5d\n", -3); // use of precision filed
printf("%05d\n", -3); // use of 0 flag to prepend with 0
Run Code Online (Sandbox Code Playgroud)
输出:
-00003
-0003
Run Code Online (Sandbox Code Playgroud)