在MSVS 2010的Windows 7上运行

我正在关注this tutorial以了解如何使用MPIR library来添加两个大整数

我了解此库应该可以帮助我增加很大的数字,如下面的程序所示:

#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 big
我误会了MPIR吗?

最佳答案

对于标准整数类型,此常数(很有可能)太大。您应该改为使用char *构造函数:

void mpz_class::mpz_class (const char *s)

例如:
mpz_class answer_a("111111111111111111111111111111111111111111111111");

为此,您需要包括合适的MPIR C++接口(interface)头(注意<gmpxx.h>来自GNU MP库的C++接口(interface)):
#include <mpirxx.h>
有关更多详细信息,请参见MPIR文档中的12.2 C++接口(interface)整数章节。

10-01 17:30