我正在使用libgmp来创建一个简单的程序 . 我可以gmp_printf所有gmp整数,所以我知道这些是初始化和正确分配 . 当我尝试一个简单的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
有没有办法让这个工作?
2 回答
您无法直接与
m
进行比较,因为m
(粗略地说)是一个指针 . 您需要使用GMP中包含的比较功能 . 见http://gmplib.org/manual/Integer-Comparisons.html#Integer-Comparisons使用
mpz_cmp
而不是m == 0
: