这是GMP 4.1.2中的错误还是我做错了?

时间:2009-07-14 11:15:42

标签: c gmp

对于这段代码,我传递字符串"kellogs special k",我得到1,这意味着字符串是一个整数。我究竟做错了什么?还是GMP问题?

#define F(x) mpf_t (x); mpf_init( (x) );

long __stdcall FBIGISINTEGER(BSTR p1) {
    USES_CONVERSION;
    F(n1);
    LPSTR sNum1 = W2A( p1 );
    mpf_set_str( n1, sNum1, 10 );
    return mpf_integer_p( n1 );
}

顺便说一句,如果有人建议使用更新的GMP,请给我一个静态LIB for Windows的网址。 TIA。

1 个答案:

答案 0 :(得分:3)

您应该检查mpf_set_str的返回值。成功时返回0,失败时返回-1。在这种情况下,它将返回失败并且n1保持不变。 mpf_init将其初始化为零,因此测试零是否为mpf_integer_p的整数将返回true。