通常,當我們這樣做:在printf(「%。* f」,a,b)中,如果'a'爲負值,結果如何?
printf (" %.*f ", 2, 3.3);
精度寬度被設置爲2個,並輸出3.30。但是如果寬度被賦予負值,例如
printf (" %.*f ", -2, 3.3);
輸出是3.300000這意味着正在使用默認寬度。那麼究竟是什麼在這裏做-2?
通常,當我們這樣做:在printf(「%。* f」,a,b)中,如果'a'爲負值,結果如何?
printf (" %.*f ", 2, 3.3);
精度寬度被設置爲2個,並輸出3.30。但是如果寬度被賦予負值,例如
printf (" %.*f ", -2, 3.3);
輸出是3.300000這意味着正在使用默認寬度。那麼究竟是什麼在這裏做-2?
晚C11標準草案說(7.21.6.1):
負精度參數取爲如果精度被刪去。
(是的,這是爲fprintf
,這也是printf
說什麼的草案(7.21.6.3):)
printf函數等同於與fprintf中的參數標準輸出前插入 參數printf。
如果省略精度,則採用負的精度。
來源: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
根據[此](http://en.cppreference.com/ w/cpp/io/c/fprintf),它被忽略:*如果這個參數的值是負數,它會被忽略。* – chris 2012-08-15 14:47:27
Huh。我從http://linux.die.net/man/3/printf – 2012-08-15 14:49:47
Welp,http://www.manpagez.com/man/3/printf/得到了一些完全不同的東西,它也說它被忽略了。 – 2012-08-15 14:51:21