在printf(“%。* f”,a,b)中,如果'a'为负数,结果会是什么?

时间:2012-08-15 14:43:39

标签: c printf

通常我们做的事情如下:

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

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

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

输出 3.300000 ,表示正在使用默认宽度。那么 -2 到底在做什么呢?

3 个答案:

答案 0 :(得分:4)

  

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

资料来源:C99 7.19.6.1(http://port70.net/~nsz/c/c99/n1256.html#7.19.6.1处的HTML版本)

或者来自POSIX(更具可读性):http://pubs.opengroup.org/onlinepubs/9699919799/functions/printf.html

答案 1 :(得分:3)

正如Chris上面所述,

  

如果省略精度,则采用负精度

这是reference

答案 2 :(得分:2)

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

  

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

(是的,它适用于fprintf,这就是草案中printf(7.21.6.3)所说的内容:)

  

printf函数等效于插入参数stdout的fprintf   在printf的参数之前。