在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)整数章节。