0

これら 2 つのprintf()関数を実行していますが、それらによって生成された出力と少し混乱しています。

  1. printf("%0.4f",3467);

- を出力します3467.0000。最初のパラメーターでは、0.4f4 は 10 進数の後に 4 つのゼロを表すため理解されますが0、1,2,3 に変更したため、同じままです。それで、それは何をしますか?

  1. printf("%1.6u\n", -32);

これを実行している間、私4294967264はこの数字が何を指しているのかを正確に把握していますか?

質問する前に、printf()リンクを確認しましたが、パラメータ検索のためにsprintf()を参照していますが、これについて何かを見つけることができませんでした。

4

1 に答える 1

2

%0.4f の 0 は、値がフォーマットされたときの出力の最小長です。あなたの場合、そのような出力は常に3467.0000になるため、10以上に変更しない限り、出力に違いは見られません。0 を 15 に変更すると、フォーマットされた出力の前に空白が 1 つ表示されます。

printf("%15.4f", 3467);
      3467.0000
|        |    |
1       10    5

お使いのブラウザでは余分な空白は表示されませんが、追加で塗りつぶし文字としてドットを使用するように指示すると、次のように表示されます。

printf("%'.15.4f", 3467);
......3467.0000
|        |    |
1       10    5

2番目の質問について。符号付きの値を符号なしの出力としてフォーマットしています。-32 は、符号なし 32 ビット整数が FFFFFFE0 であるためです。printf に unsigned として出力するように指示すると、4294967264 である FFFFFFE0 の unsigned 値が得られます。

于 2013-02-23T20:37:38.253 に答える