2

12桁の数字に使おうとしているlongのですが、「整数定数は「long」型には大きすぎます」とのことで、C++とProcessing(Javaに似たもの)で試してみました。何が起こっていて、何を使用すればよいですか?

4

4 に答える 4

5

C および C++ では (Java とは異なり)、 のサイズlongは実装定義です。64 ビットの場合もあれば、32 ビットの場合もあります。後者の場合、10 進数 9 桁分のスペースしかありません。

64 ビットを保証するには、long long型、または のような固定幅型のいずれかを使用できますint64_t

于 2011-06-21T00:06:00.043 に答える
3

リテラル定数を指定する場合は、適切な型指定子を使用する必要があります。

int i = 5;
unsigned i = 6U;

long int i = 12L;
unsigned long int i = 13UL;

long long int i = 143LL;
unsigned long long int i = 144ULL;

long double q = 0.33L;

wchar_t a = L'a';
于 2011-06-21T00:37:43.600 に答える
1

long longgcc または__int64msvc でa を使用してみてください。

于 2011-06-21T00:04:24.483 に答える
1

C ++ではわかりませんが、Cには、<stdint.h>必要なビット数の整数型を移植可能に持つヘッダーファイルが呼び出されます。

int8_t 
int16_t
int32_t
int64_t

およびそれらの署名されていない対応物 (uint8_t など)。

更新: ヘッダーは<cstdint>C++ で呼び出されます

于 2011-06-21T00:09:51.427 に答える