2012-09-05 52 views
1

我使用libgmp創建一個簡單的程序。我可以gmp_printf所有gmp整數,所以我知道這些被初始化並正確分配。當我嘗試一個簡單的if-else條件時,會發生問題。GMP有條件

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,但總是顯示其他printf。

2038074744 
2 
0 
number is odd 

有沒有辦法讓這個工作?

回答

0

使用mpz_cmp代替m == 0

if(mpz_cmp(m,0) == 0) 
    printf("number is even\n"); 
else 
    printf("number is odd\n");