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 ( http://port70.net/~nsz/c/c99/n1256.html#7.19.6.1の HTML バージョン)

または 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関数は、printfの引数の前に引数stdoutが挿入されたfprintfと同等です。

于 2012-08-15T14:48:06.393 に答える