2012-07-02 4 views

答えて

13

いいえ、これはバグではありません。

あなたは、最初の引数は、符号なし整数であるFormatを言っているが、実際には、あなたは、符号付き整数を通過しました。その符号付き整数は符号なしとして解釈され、-100の符号付き値のビットパターンは符号なし値4294967196に相当します。

実際には、コードに誤りがあります。書式文字列は、Formatの引数が弱く型付けされているため、コンパイラが強制できないコントラクトを定義します。あなたが符号なしの値を渡すことを約束したときに実際に符号なしの値を渡すかということを確認するあなたの責任です。ここでのコードの誤りは、論理的には文字列や浮動小数点の値を渡すことに相当します。浮動小数点の値はエラーであり、はるかに容易に認識できます。

+2

Whoeha、これは私の主な誤解です。_unsigned decimal_は出力ではなく入力のタイプです。 – NGLN

+0

@NGLN:Printf形式の関数はそのように動作します –

関連する問題