Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
いくつかの値を計算する C プログラムを書かなければなりません。実際には問題はないはずで、私のプログラムは小さな数値に対しては動作しますが、たとえば 2^32 のような大きな数値を出力しようとするとうまくいきません。整数変数が 2^32 ビットの大きさであることはわかっていますが、long 変数または unsigned long 変数を使用することはできませんか?
なぜ
unsigned long erg = pow(2,32); printf(%u, erg);
うまくいかない?
unsigned long を出力するための正しい形式は%lu、 ではなく%u
%lu
%u
この依存関係は、基礎となるアーキテクチャに依存します。32 ビット マシンを使用している場合、2^31 - 1 より大きな整数を生成することはできません。それとは別に、32 ビット マシンでさえ、範囲が -2^31 から2^31 - 1。