私は符号なし整数を持っていますが、%dを使用して印刷するときに、そこに負の値があることがありますか?C符号なし整数が負の値を指定していますか?
答えて
これは動作するはずです:
unsigned int a;
printf("%u\n", a);
説明:ほとんどのアーキテクチャでは、整数はtwo's complementで表現されて署名しました。このシステムでは、int
またはunsigned int
のいずれを使用しているかにかかわらず、2**(N-1)
(ここではN = sizeof(int)
)より小さい正の数値が同じ方法で表されます。ただし、符号なし整数の数値が2**(N-1)
より大きい場合は、負の符号付き数値が2の補数で表されます。これはを渡したときのprintf
の値です。
印刷%d
は、定義された型にかかわらず、整数を符号付き10進数として読み取ります。
符号なし数値を出力するには、%u
を使用します。
これは、Cが可変引数を処理するために発生します。コンパイラは、スタックから値を取り出し(void*
と呼び出しスタックを指す)、printf
は、与えられた書式文字列に含まれるデータを把握する必要があります。
toString
から汎用または事前定義されたフォーマット文字列を提供する必要があります.CはRTTIの方法ではありません。たとえば、Javaの場合はObject
となります。
Nitpick:Cは値によって呼び出されるため、コンパイラはポインタではなく引数の値を取得します。あなたは値(printf( "%u"、myvariable);)へのポインタを渡さず、値を直接渡します(printf( "%u"、myvariable);)。 – unwind
実際には 'printf'にスタックへのポインタを与えます。 – LiraNuna
@LiraNuna - varargs関数の実装が指定されていないので、 '#define va_copy(dest、src)dest = src'や' #define va_copy(dest、src)memcpy(dest、src、sizeof(va_list )) 'は、提供されていないシステム上の' va_copy'マクロの移植可能な置き換えです。そのうちの1人は働くかもしれませんが、誰がどちらを知っていますか? –
%dは、printfが値をint(符号付き)として解釈することを意味します。 unsigned intの場合、%uを使用してください。
- 1. C++の符号なし整数と符号なし整数の違い
- 2. 符号なし整数にC++で符号なし整数を書き込む
- 3. cの符号なし整数
- 4. 1バイトの符号なし整数C++
- 5. C++符号付き整数式と符号なし整数式の比較
- 6. 符号なし整数変換C++
- 7. 符号なし整数型に範囲外の(負の)値を代入する
- 8. 符号なし整数の負の場合はどうなりますか?
- 9. 符号なし整数と符号なし整数の間に違いがあります
- 10. 符号なし整数減算は動作を定義していますか?
- 11. 負の数値を返す符号付き整数でアカウント残高を実行しています
- 12. 符号なしの短い整数を16進数で表示します。C
- 13. 符号付き整数オーバーフローが定義されていませんが、なぜturbo c符号付き整数が毎回オーバーフローするのですか?
- 14. 符号なしロングロングフィボナッチ数が負数ですか?
- 15. C++で符号なしリテラルとして負の値を書く方法
- 16. ボーランドC/C++の符号なし整数へのキャストショート
- 17. 符号なしの文字に整数値を代入する
- 18. 符号なし整数複数構文
- 19. 符号なしと符号付きバイナリ整数への追加
- 20. Goで符号なし整数をソート
- 21. int内の符号なし整数
- 22. Clojureの符号なし16ビット整数
- 23. C:バイナリベースで符号なし整数を出力する
- 24. 32ビットプロセッサで符号付き整数と符号なし整数を使用して符号付き64ビット整数を作成する方法
- 25. C#marshalネイティブサイズの符号なし整数size_t、ref/outパラメータで値を取得
- 26. 符号なし整数から符号付き整数への変換または逆の変換
- 27. pymongo 64bit符号なし整数
- 28. 符号なし整数をビットシフトで負の数にすることはできますか?
- 29. SQLAlchemyで符号なし整数を定義する方法
- 30. 符号なし8ビット整数のビンジュム除算。 C
コンパイラでこの種のエラーについて警告するオプションがあるかどうかを確認してください。それはgccを使ってフォーマットします。 –
[符号なし整数の最大値を出力する方法は?](http://stackoverflow.com/questions/12812812/how-can-i-print-maximum-value-of-an-unsigned-integer) –