相关疑难解决方法(0)

避免在libgmp中中止

我有一些使用libgmp的代码.在某些时候,用户可以请求非常大数量的阶乘.不幸的是,这导致libgmp引发中止信号.

例如,以下代码:

#include <cmath>
#include <gmp.h>
#include <iostream>

int main() {

    mpz_t result;
    mpz_init(result);

    mpz_fac_ui(result, 20922789888000);

    std::cout << mpz_get_si(result) << std::endl;
}
Run Code Online (Sandbox Code Playgroud)

结果是:

$ ./test 
gmp: overflow in mpz type
Aborted
Run Code Online (Sandbox Code Playgroud)

显然,产生的数字真的很大.反正是否比中止更优雅地处理错误.这是一个基于GUI的应用程序,它中止是处理此类问题的最不可取的方法.

c c++ gmp

6
推荐指数
1
解决办法
1138
查看次数

标签 统计

c ×1

c++ ×1

gmp ×1