这是 GMP 4.1.2 中的错误还是我做错了什么?
对于这段代码,我传递了字符串“kellogsspecial 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 静态 LIB 的网址。 TIA。
To this bit of code I pass the string "kellogs special k"
and I get 1
which means that the string is an integer. What on earth am I doing wrong? Or is it a GMP problem?
#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 );
}
By the way, if anyone's going to suggest using a more recent GMP, please can you give me the web address of the static LIB for Windows. TIA.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您应该检查 mpf_set_str 的返回值。 成功时返回
0
,失败时返回-1
。 在这种情况下,它将返回失败,并且n1
保持不变。mpf_init
将其初始化为零,因此使用mpf_integer_p
测试零是否为整数会返回 true。You should check the return value of
mpf_set_str
. It returns0
on success and-1
on failure. In this case it would have returned a failure andn1
is left untouched.mpf_init
initialized it to zero, so testing whether zero is an integer withmpf_integer_p
returns true.