libgmp を使用して簡単なプログラムを作成しています。すべての gmp 整数を gmp_printf できるので、これらが正しく初期化され、割り当てられていることがわかります。この問題は、単純な if-else 条件を試したときに発生します。
mpz_t n;
mpz_t c;
mpz_t m;
mpz_init(n);
mpz_init(c);
mpz_init(m);
mpz_set_str(c, "2", 10);
mpz_set_str(n, "2038074744", 10);
mpz_mod(m, n, c);
gmp_printf("\n%Zd\n%Zd\n%Zd\n", n, c, m);
if(m == 0)
{
printf("number is even\n");
}
else
{
printf("number is odd\n");
}
実際の数値は 0 として出力されますが、else printf は常に表示されます。
2038074744
2
0
number is odd
これを機能させる方法はありますか?