让我们以下面的程序:关于用C
#include <stdio.h>
int main()
{
long t =57 ;
printf("[%+03ld]", t);
}
,它的输出:
[+57]
我莫名其妙地感到困惑:我告诉他垫的输出宽度3(03ld
),但为零,但如果强制输出在数字前加一个加号(+
),如果该数字的长度已经是2位数(如57),它不会添加所需的零。对于数字< 10它填充1个零。
从http://www.cplusplus.com/reference/cstdio/printf/
(0) - >左垫用零的数目(0)而不是空格配置的填充时(参见宽度子说明符)。
(+) - >即使对于正数,强制在结果前加上加号或减号(+或 - )。默认情况下,只有负数前面带有 - 符号。
(宽) - >要打印的最少字符数。如果要打印的值小于此数字,则结果将填充空白。即使结果较大,该值也不会被截断。
所以我只需要澄清...上方从报价的(width)
说明符指的是输出的字符串(即:将要打印的字符)的整个长度由该格式说明("%+03ld"
)控制或要打印的号码字符的全长?
“(宽度) - >最小字符数_要打印_”。我不知道你还需要什么;这要尽可能清楚。 – 2014-10-09 08:28:51