通常当我们做类似的事情时:
printf ( " %.*f ", 2, 3.3 );
精度宽度设置为 2 并输出3.30。但是如果宽度被赋予负值怎么办,例如
printf ( " %.*f ", -2, 3.3 );
输出为3.300000,这意味着正在使用默认宽度。那么这个-2到底在做什么呢?
取负精度,就好像省略了精度一样。
来源:C99 7.19.6.1(HTML 版本位于http://port70.net/~nsz/c/c99/n1256.html#7.19.6.1)
或来自 POSIX(更具可读性): http: //pubs.opengroup.org/onlinepubs/9699919799/functions/printf.html
后期 C11 标准草案说(7.21.6.1):
采用负精度参数,就好像省略了精度一样。
(是的,它是为了fprintf
,这就是草案所说的printf
(7.21.6.3):)
printf 函数等效于 fprintf,其参数 stdout 置于 printf 的参数之前。