2012-07-24 6 views
2

방금 ​​GMP를 망치기 시작했는데 제대로 인쇄 할 수없는 것처럼 보입니다. 여기 내가 시도한 바가 있습니다 :GMP gmp_printf()

#include <stdio.h> 
#include <stdlib.h> 
#include "gmp.h" 
int main(){ 
    mpz_t n; 
    mpz_init (n); 
    mpz_set_ui(n, 2); 

    gmp_printf("attempt 1: %d \n", n); 
    gmp_printf("attempt 2: %Z \n", n); 

    return 0; 
} 

나는 이것이 정말로 간단해야한다는 것을 알고 있습니다. 그러나 나는 그것을 보지 않고 있습니다.

내 출력은 다음과 같습니다

attempt 1: 1606416528 
attempt 2: Z 

가 난 그냥 mpz_set_ui 잘못 사용하는 것 같아요 ...

편집 :

Zd를 내가 또한 내가 일 것이라고 생각 % n을 시도 작동

% , 그러나 이것에 관해 어떤 도움을 확실히 필요로하지는 않습니다.

+0

* mpz_t * 유형은 무엇입니까? 구조체, 공용체, 정수에 대한 간단한 typedef입니까? –

+0

@ A.G. - GMP에 의해 선언 된 그것의 불투명 한 타입. 그 아이디어는 그 내부를 결코 알 필요가 없다는 것입니다. 임의의 정밀도 정수 (즉, 머신의 ISA가 기본적으로 지원하는 것보다 훨씬 더 넓을 수 있음)를 나타내는 것으로 가정합니다. – ArjunShankar

답변

7

은 오른쪽을 사용하여입니다. 이 실제로해야하기 때문에

gmp_printf("attempt 1: %d \n", n); 
gmp_printf("attempt 2: %Z \n", n); 

위 모두 작동하지 않습니다

gmp_printf("attempt 3: %Zd \n", n); 

을이 gmp_printf이 그것을 필요로하는 방법이기 때문이다.

형식이 지정된 출력 문자열의 처리 방법은 GMP here입니다.

+0

위대한! 고맙습니다 – Zevan