在带有MSVS 2010的Widows 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吗?
答案 0 :(得分:4)
对于标准整数类型,这种常数(很可能)太大了。您应该使用char *
构造函数:
void mpz_class::mpz_class (const char *s)
例如:
mpz_class answer_a("111111111111111111111111111111111111111111111111");
要完成这项工作,您需要包含合适的MPIR C ++接口标头(注意<gmpxx.h>
来自GNU MP库的C ++接口):
#include <mpirxx.h>
有关详细信息,请参阅MPIR文档中的12.2 C ++接口整数章节。