我正在尝试使用GMP整数在VC 2008 Express中执行do-while循环
mpz_t d;
mpz_init(d);
do{
}while(d!=1);
错误是:错误C2040:'!=':'mpz_t'的间接级别与'int'不同 d!= 1部分导致了这一点。有什么办法围绕这个。使用GMP的原因是大数字。
答案 0 :(得分:3)
来自docs
功能:
int mpz_cmp (MP_INT *operand1, MP_INT *operand2)
...
比较operand1
和operand2
。如果是operand1 > operand2
,零,则返回正值operand1 == operand2
,如果operand1 < operand2
,则为负值。
检查mpz_set_<xx>
函数,从常规整数常量(mpz_t
表示)设置1
值,以与
mpz_t d;
mpz_init(&d);
mpz_t one;
mpz_set_si(&one,1);
// ...
do {
} while(mpz_cmp(&d,&one) != 0);