在GMP中初始化变量

时间:2017-02-14 03:15:02

标签: 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也需要?

1 个答案:

答案 0 :(得分:4)

mpz_t result只声明一个变量。类型mpz_tstruct __mpz_struct的typedef。此结构包含三个由mpz_init()初始化的变量。希望有所帮助。