5

これについて少し検索しましたが、特にストレートな答えは得られませんでした。C (および私は C++ だと思います) では、? を使用するときに % の後に何が来るかをどのように判断しますprintfか。例えば:

double radius = 1.0;
double area = 0.0;
area = calculateArea( radius );
printf( "%10.1f     %10.2\n", radius, area );

この例は、私が持っている C 言語に関する本からそのまま引用しました。これは私にはまったく意味がありません。10.1fどこでとを思いつきます10.2fか? 誰かがこれを説明してもらえますか?

4

8 に答える 8

15

http://en.wikipedia.org/wiki/Printf#printf_format_placeholdersは、printf のフォーマット プレースホルダーに関するウィキペディアのリファレンスです。http://www.cplusplus.com/reference/clibrary/cstdio/printf.htmlも役に立ちます

基本的に単純な形式では、%[幅].[精度][タイプ] です。幅を使用すると、出力される変数が少なくとも特定の長さであることを確認できます (表などに役立ちます)。Precision を使用すると、数値が出力される精度 (小数点以下の桁数など) を指定でき、指定した変数が何であるか (文字、整数、倍精度など) を C/C++ に通知できます。

お役に立てれば

アップデート:

例を使用して明確にするには:

printf( "%10.1f     %10.2\n", radius, area );

%10.1f (最初の引数: radius を参照) は、長さを 10 文字にし (つまり、スペースで埋める)、小数点以下 1 桁の float として出力することを意味します。

%10.2 (2 番目の引数: area を参照) は、(上記のように) 10 文字の長さにし、小数点以下 2 桁で出力することを意味します。

于 2008-08-20T13:50:05.570 に答える
7
man 3 printf

Linux システムでは、必要なすべての情報が得られます。これらのマニュアル ページはオンラインでも見つけることができます (たとえば、http://linux.die.net/man/3/printf )。

于 2008-08-20T13:48:14.217 に答える
2

10.1f は、幅 10 文字、小数点以下 1 桁の浮動小数点を意味します。数字が 10 桁未満の場合は、スペースが埋め込まれます。10.2f も同じですが、小数点以下 2 桁です。

次の基本的なタイプがあります。

%d   - integer
%x   - hex integer
%s   - string
%c   - char (only one)
%f   - floating point (float)
%d   - signed int (decimal)
%i   - signed int (integer) (same as decimal).
%u   - unsigned int
%ld  - long (signed) int
%lu  - long unsigned int
%lld - long long (signed) int
%llu - long long unsigned int

編集:@Eliの応答(man 3 printf)には他にもいくつかリストされています。

于 2008-08-20T13:53:08.247 に答える
2

10.1f は、小数点以下 1 桁、小数点前 10 桁の浮動小数点を意味します。数字が 10 桁未満の場合は、スペースが埋め込まれます。10.2f も同じですが、小数点以下 2 桁です。

Unix から Rails Migrations まで、私が見たすべてのシステムで、これは当てはまりません。@robintw はそれを最もよく表現しています。

基本的に単純な形式では、%[幅].[精度][タイプ] です。

つまり、「小数点前10桁」ではなく、「小数点を含め前後10桁」です。

于 2008-08-20T15:17:26.280 に答える
1

つまり、% の後のこれらの値は、printf後で来るすべての変数をどのように解釈 (または出力) するかを示します。あなたの例でradiusは、フロート(これは「f」)として解釈され、10.1印刷時に使用する小数点以下の桁数に関する情報を提供します。

printf で使用できるすべての修飾子の詳細については、このリンクを参照してください。

于 2008-08-20T13:51:18.733 に答える
0

10.1fは、小数点以下1桁の浮動小数点数を表示することを意味し、表示される数値は10文字の長さでなければなりません。

于 2008-08-20T13:50:37.690 に答える
0

man ページには、必要な情報が含まれています。上記の内容を読むには:

printf( "%10.2f", 1.5 )

これは印刷されます:

         1.50

一方:

printf("%.2f", 1.5 )

版画:

1.50

両方の正当性に注意してください。同様に:

printf("%10.1f", 1.5 )

印刷します:

        1.5

の後の任意の数字。印刷する精度です。の前の任意の数字。左マージンからの距離です。

于 2008-08-20T13:51:59.590 に答える
-1

他の人が提起していない問題の 1 つは、 doubleがfloatと同じかどうかです。一部のシステムでは、float と比較して double には異なるフォーマット指定子が必要でした。特に、渡されるパラメーターのサイズが異なる可能性があるためです。

%f - フロート
 %lf - ダブル
 %g - ダブル

于 2008-08-23T11:00:49.087 に答える