2

MSVS 2010 を搭載した Widows 7 での実行

MPIR ライブラリを使用して 2 つの大きな整数を加算する方法を理解するために、このチュートリアルに従っています。

このライブラリは、以下のプログラムに示すように、非常に大きな数を追加するのに役立つはずです。

#include < stdio.h>
#include < stdlib.h>
#include < gmpxx.h>
#include < iostream>

using namespace std;

void main(int argc, char *argv[])
{

   mpz_class answer_a = 111111111111111111111111111111111111111111111111;
   mpz_class answer_b = 111111111111111111111111111111111111111111111111;


   mpz_class answer_c; 

   answer_c= answer_b + answer_a ;   

   cout << answer_c<<"\n";


} 

しかし、それでも私は得る error C2177: constant too bigMPIRを誤解していませんか?

4

1 に答える 1

4

このような定数は、標準の整数型には (おそらく) 大きすぎます。char *代わりにコンストラクターを使用する必要があります。

void mpz_class::mpz_class (const char *s)

例えば:

mpz_class answer_a("111111111111111111111111111111111111111111111111");

これを機能させるには、適切な MPIR C++ インターフェイス ヘッダーを含める必要があります ( GNU MPライブラリ<gmpxx.h>の C++ インターフェイスからのものであることに注意してください)。

#include <mpirxx.h>

詳細については、MPIR ドキュメントの 12.2 C++ インターフェイス整数の章を参照してください。

于 2014-12-19T12:02:07.767 に答える