Работает на Вдовах 7 с MSVS 2010
Я следую этот урок чтобы понять, как использовать Библиотека 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 ?
Такая константа (очень вероятно) слишком велика для стандартных целочисленных типов. Вы должны использовать char *
вместо конструктора:
void mpz_class::mpz_class (const char *s)
Например:
mpz_class answer_a("111111111111111111111111111111111111111111111111");
чтобы это работало, вам нужно включить подходящий заголовок интерфейса MPIR C ++ (обратите внимание, что <gmpxx.h>
из интерфейса C ++ GNU MP библиотека):
#include <mpirxx.h>
См. Главу 12.2 Интерфейсы C ++ Interface Integers в документации MPIR для более подробной информации.