В соответствии с руководством 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++, который делает всю магию для вас. –