Получение ошибки C2177: константа слишком велика с MPIR

Работает на Вдовах 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 ?

2

Решение

Такая константа (очень вероятно) слишком велика для стандартных целочисленных типов. Вы должны использовать 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 для более подробной информации.

4

Другие решения


По вопросам рекламы [email protected]