根据 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 result
和 mpz_init(result)
。为什么还需要mpz_init
?
最佳答案
mpz_t result
仅声明一个变量。类型mpz_t
是struct __mpz_struct
的类型定义。该结构包含三个由mpz_init()
初始化的变量。希望有帮助。
关于c++ - GMP 中变量的初始化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42217253/