c++ - GMP 中变量的初始化

标签 c++ gmp arbitrary-precision

根据 GMP 手册,“整数运算函数假设所有整数对象都已初始化。您可以通过调用函数 mpz_init 来完成此操作。”

例如,

int main(){
    mpz_t n1, n2, result;
    mpz_init_set_str(n1, "465860", 10);
    mpz_init_set_str(n2, "167", 10);
    mpz_init(result);
    mpz_mod(result, n1, n2);
    mpz_out_str(stdout, 10, result);
    return 0;
}

如果从上面的代码中删除mpz_init(result);,编译器将产生段错误错误。所以,我的问题是,这两种类型的定义之间到底有什么区别:mpz_t resultmpz_init(result)。为什么还需要mpz_init

最佳答案

mpz_t result 仅声明一个变量。类型mpz_tstruct __mpz_struct的类型定义。该结构包含三个由mpz_init()初始化的变量。希望有帮助。

关于c++ - GMP 中变量的初始化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42217253/

相关文章:

c++ - 哪个递归函数会占用更少的内存?

c++ - 如何在 GMP 的 while 循环中获得不相等

c++ - 避免在 libgmp 中中止

c# - C# 中小数的任意精度帮助?

c++ - 在不绕过共享语义的情况下通过引用传输 vector<shared_ptr<T>>

c++ - 超出范围会自动删除动态数组内存分配吗?

c++ - boost::asio::io_service 是否保留处理程序的顺序?

c - `#include <gmpxx.h>` 无法用 `fatal error: iosfwd: No such file or directory` 编译

c++ - 将 unsigned long 除以 size_t 并将结果分配给 double

performance - 固定精度与任意精度