2012-08-15 86 views
1

通常,当我们这样做:在printf(“%。* f”,a,b)中,如果'a'为负值,结果如何?

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

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

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

输出是3.300000这意味着正在使用默认宽度。那么究竟是什么在这里做-2

+4

根据[此](http://en.cppreference.com/ w/cpp/io/c/fprintf),它被忽略:*如果这个参数的值是负数,它会被忽略。* – chris 2012-08-15 14:47:27

+0

Huh。我从http://linux.die.net/man/3/printf – 2012-08-15 14:49:47

+0

Welp,http://www.manpagez.com/man/3/printf/得到了一些完全不同的东西,它也说它被忽略了。 – 2012-08-15 14:51:21

回答

3
作为

克里斯评论类似以上,

负精度被取为如果精度省略

这里的一个reference

+1

§7.21.6.1/ 5如果任何人有兴趣(至少在C11之一)。我只是看着自己。 – chris 2012-08-15 14:50:59

2

晚C11标准草案说(7.21.6.1):

负精度参数取为如果精度被删去。

(是的,这是为fprintf,这也是printf说什么的草案(7.21.6.3):)

printf函数等同于与fprintf中的参数标准输出前插入 参数printf。

相关问题