【发布时间】:2024-01-21 01:59:01
【问题描述】:
我们来看看下面的程序:
#include <stdio.h>
int main()
{
long t =57 ;
printf("[%+03ld]", t);
}
它的输出:
[+57]
我有点困惑:我告诉他将输出填充到宽度 3 (03ld),用零填充,但是似乎如果我强制输出在数字前加上一个加号 (+) 它如果数字的长度已经是 2 位数(如 57),则不会添加所需的零。对于
来自http://www.cplusplus.com/reference/cstdio/printf/
(0) -> 在指定填充时,用零 (0) 代替空格填充数字(参见宽度子说明符)。
(+) -> 强制在结果前面加上一个加号或减号(+ 或 -),即使是正数。默认情况下,只有负数前面带有 - 号。
(width) -> 要打印的最小字符数。如果要打印的值比这个数字短,结果用空格填充。即使结果更大,该值也不会被截断。
所以我只需要澄清一下...上面引用中的(width) 说明符是指由此格式说明符("%+03ld")控制的输出字符串的全长(即:将打印的字符)还是要打印的数字的字符的全长?
【问题讨论】:
-
"(width) -> 要打印的最小字符数。"我不知道你还需要什么;这是尽可能清楚的。
标签: c printf format-specifiers