GMP中变量的初始化
Initialization of variables in GMP
根据GMP手册,"The functions for integer arithmetic assume that all integer objects are initialized. You do that by calling the function 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()
初始化的变量。希望对您有所帮助。
根据GMP手册,"The functions for integer arithmetic assume that all integer objects are initialized. You do that by calling the function 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()
初始化的变量。希望对您有所帮助。