C 这是GMP 4.1.2中的一个缺陷还是我';我做错了?

C 这是GMP 4.1.2中的一个缺陷还是我';我做错了?,c,gmp,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 ); re

我将字符串
“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,请告诉我Windows静态库的网址。TIA.

您应该检查
mpf\u set\u str的返回值。成功时返回
0
,失败时返回
-1
。在这种情况下,它将返回一个故障,
n1
保持不变
mpf\u init
将其初始化为零,因此使用
mpf\u integer\u p
测试零是否为整数将返回true。

您应该检查
mpf\u set\u str
的返回值。成功时返回
0
,失败时返回
-1
。在这种情况下,它将返回一个故障,
n1
保持不变
mpf_init
将其初始化为零,因此使用
mpf_integer\u p
测试零是否为整数将返回true