4

我刚刚开始搞乱 GMP,我似乎无法正确打印数字。这是我正在尝试的:

#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,我认为它会工作,但不......肯定需要一些帮助。

4

1 回答 1

12

mpz_set_ui了。

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

以上两种方法都不起作用,因为它实际上应该是:

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

因为这是gmp_printf需要的。

此处对 GMP 中的格式化输出字符串进行了相当完整的处理。

于 2012-07-24T11:54:05.440 回答