2
根據GMP手冊,「整數算術的函數假定所有的整數對象都被初始化了,你可以通過調用函數mpz_init來完成」。GMP中變量的初始化
例如,
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_clear!或者使用C++接口,它爲你提供了所有的魔力。 –