得到错误C2177:MPIR常常太大

时间:2014-12-19 11:57:29

标签: c++ biginteger mpir

在带有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吗?

1 个答案:

答案 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 ++接口整数章节。