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 works 私も %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 に答える