2011-12-24 7 views
5

私はちょっと混乱して、C言語での仕事の長さについて混乱しています。Cで長いデータ型を使用するには?

私がJavaでlongの最大値を求めたら、私は五分位数で数値を取得します。私がC言語で署名したものであれ署名していないものであれ、それは何十億というものです。

JavaはC言語で構築されています...違いはどこから来ていますか?

また、長いlong値、符号なし/符号付きlong値、およびlong int値を持つリテラルを表現しようとしました。彼らの中には何十億もの中途半端な数字を扱う人はいません。どうして?私は間違いをしていますか?

+1

http://en.wikipedia.org/wiki/Integer_(computer_science) –

答えて

10

longは、少なくともintと同じ大きさであると定義されています。実際のサイズは実装に依存します。これは、longが64ビットであることが要求されるJavaの場合ではありません。

int64_tのような固定サイズの整数型は、stdint.hで定義されています。すべてのプラットフォームで固定サイズの整数が必要な場合に使用できます。

+0

コメントを追加するだけです。通常、オペレーティングシステムのビットによって異なりますが、もちろんそうである必要はありません。 – Dimme

+0

標準のCライブラリで64ビット長を使用できますか? – bgroenks

+1

@ ghostsoldier23 64ビットの値をとるライブラリでは64ビットを使用できます。通常はプログラムを64ビットとしてコンパイルする必要があります。 'size_t'が64ビットのときです。 –

2

Cもlong longタイプです。それは少なくとも64ビットであることが保証されています。

+0

C99は、64ビット符号付き整数を保持でき、 'long int'のサイズよりも大きいことができるように' long long int'を定義します。必ずしも64ビットであるとは限りません。 –

+0

@MehrdadAfshari、右、私は十分に正確ではなかった、ありがとう、変更されました。 –

+0

@Mehrdad:あなたは、 'long long int'のサイズは' long int'のサイズより厳密に大きくなければならないと言っています。あれは正しいですか?確かに、準拠している実装では 'long int'と' long int'と同じサイズを提供できます。 'long long int'のサイズは' long int'のサイズより小さくすることはできません。 –

0

あなたはここにGNU MP BIGNUMライブラリを使用することができ、より大きな数字で作業する場合: http://gmplib.org/ 番号と精度が唯一それが稼働するマシンの使用可能なメモリによって制限されます。

関連する問題