2

4 バイトを超える可能性のある符号なし整数を使用する必要があります。どの型を使用すればよいですか?

PS「ヌービズム」で申し訳ありませんが、それだけです:D

注意: 除算を行い、整数部分のみを処理する必要があるため、整数が必要です。このように int は便利です。

4

5 に答える 5

11

<stdint.h> をインクルードして int64_t と uint64_t を使用するだけです (unsigned が必要なので、uint64_t が必要です)。

そのヘッダーには、最小バリアント (uint_least64_t は少なくとも 64 ビットの型) や高速バリアント (uint_fast64_t は少なくとも 64 ビットの最速の整数型) など、他にもいくつかの便利なバリアントがあります。intptr_t/uintptr_t (void * ポインターに十分な大きさ) と intmax_t/uintmax_t (最大の型) も非常に便利です。

また、何らかの理由でコンパイラに <stdint.h> がない場合 (IIRC は C++ ではなく C 標準であるため)、Boost のboost/cstdint.hppを使用できます (持っていても使用できます)。 <stdint.h>、その場合は単にコンパイラのヘッダーに転送する必要があるため)。

于 2008-10-18T19:10:40.760 に答える
6

long long、64ビット整数...ここでは、データ型と範囲に関する参照を見つけることができます...

于 2008-10-18T19:00:30.640 に答える
4

好きなのを選びな:

long long(–9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807)

unsigned long long: (0 ~ 18,446,744,073,709,551,615)

于 2008-10-18T19:16:15.677 に答える
2

非常に長い整数 (任意の精度) が必要な場合は、C++ クラス ベースのインターフェイスも提供するgmpライブラリを試すこともできます。

于 2008-10-18T20:42:23.133 に答える
1

unsigned long long - 少なくとも 64 ビットの長さです

于 2008-10-18T19:02:47.950 に答える