2017-02-14 2 views
2

GMP의 매뉴얼에 따르면 "정수 계산을위한 함수는 모든 정수 객체가 초기화되었다고 가정합니다. 함수를 호출하여 수행 할 수 있습니다." 위의 코드에서 mpz_init(result);를 제거하는 경우 예를 들어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_t resultmpz_init(result)입니다. mpz_init도 필요한 이유는 무엇입니까?

+2

mpz_clear를 잊지 마세요. 또는 모든 마법을 수행하는 C++ 인터페이스를 사용하십시오. –

답변

4

mpz_t result은 변수 만 선언합니다. 유형 mpz_tstruct __mpz_struct의 typedef입니다. 이 구조체는 mpz_init()으로 초기화되는 세 개의 변수를 포함합니다. 희망이 도움이됩니다.