2017-11-12 12 views
-2

値の格納にはlongタイプを使用していますが、10桁以上の数値は格納しません。10桁以上の整数データ型

拡張メモリサイズ(12バイト以上など)の新しい整数型を作成する方法はありますか?

+0

確かに現代的なC++ 14の互換のコンパイラと役に立つかもしれません、ちょうどクラスReallybigInt 'のように、クラスを定義します{...}; 'では、クラス内でどのように動作するのかを定義するだけです。 – Aganju

+1

[Google検索。](https://www.google.com/search?source=hp&ei=CtgHWuXPHtO2jwPA1onIDQ&q=bigint+c%2B%2B&oq=BigInt+C%2B%2B&gs_l=psy-ab.1.0.0l5j0i22i30k1l5.1633.8522 .0.15772.11.10.0.0.0.0.99.591.10.10.0 .... 0 ... 1.1.64.psy-ab..1.10.588.0..0i131k1j0i10k1.0.sFD451JBL0U) – jwdonahue

+0

本当に12バイトが必要ですか?それとも、10桁以上の整数がほしいのですか? – Buddy

答えて

1

long long(またはunsigned long long)(64ビットで、範囲は-9,223,372,036,854,775,808〜9,223,372,036,854,775,807)です。

http://en.cppreference.com/w/cpp/language/types#Range_of_values

+1

64ビット整数はわずか8バイトですが、問題は代わりに12バイト整数を探しています。 –

+1

これは当てはまりますが、問題は「10桁以上の数字を格納する」ことです。 – Buddy

+0

長めにしてみましたが、11桁以上の数字は保存されていません。 –

0

あなたが望むように、あなたはできるだけ多くの数字を格納するを許可するか、Pythonの使用するarbitrary precisionの実装を、書くことができます。基本的な算術を最初から実装する必要がありますが、その点を理解すればそれほど難しくありません。

long longの長さは少なくとも8バイトであることが標準で保証されています。あなたは8バイトの整数をしたい場合は、これを試してください:あなたのコンパイラは、それがint64_tが何であるかを知らないことに文句を言う場合

#include <stdint.h> 
int64_t a; 
uint64_t b; // Unsigned 64-bit int 

、その後、あなたはAPを実装していない限り、運がありません。

+0

@ M.M.O!私は訂正した。 – iBug

関連する問題