1

通常当我们做类似的事情时:

printf ( " %.*f ", 2, 3.3 );

精度宽度设置为 2 并输出3.30。但是如果宽度被赋予负值怎么办,例如

printf ( " %.*f ", -2, 3.3 );

输出为3.300000,这意味着正在使用默认宽度。那么这个-2到底在做什么呢?

4

3 回答 3

4

取负精度,就好像省略了精度一样。

来源: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

于 2012-08-15T14:51:29.783 回答
3

正如克里斯在上面类似评论的那样,

取负精度,就好像省略了精度

这是一个参考

于 2012-08-15T14:50:06.160 回答
2

后期 C11 标准草案说(7.21.6.1):

采用负精度参数,就好像省略了精度一样。

(是的,它是为了fprintf,这就是草案所说的printf(7.21.6.3):)

printf 函数等效于 fprintf,其参数 stdout 置于 printf 的参数之前。

于 2012-08-15T14:48:06.393 回答