2

使用 MSVS 2010 在寡妇 7 上运行

我正在关注本教程以了解如何使用MPIR 库来添加两个大整数

我知道这个库应该可以帮助我添加非常大的数字,如下面的程序所示:

#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吗?

4

1 回答 1

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

于 2014-12-19T12:02:07.767 回答