您好我有一个使用ndk
的android项目有一个c函数atof()定义了
static __inline__ double atof(const char *nptr)
{
return (strtod(nptr, NULL));
}
但不知何故,它总是导致0.0
error_printf("found %s parsed %d \n",nextArg, atof(nextArg));
found 44 parsed 0
任何想法为什么?
参数nextArg似乎不是问题
error_printf("found %s parsed %d \n","123", atof("123"));
found 123 parsed 0
答案 0 :(得分:2)
将打印消息从%d
(需要32位整数)更改为%f
,这需要64位浮点值。
您的print语句显示其参数的低32位,由于您选择的测试输入,它恰好全为零。如果您打印atof(123.3)
,则会看到来自%d
的非零值。
当然,请确保您拥有#include <stdlib.h>
以确保您拥有atof()
和strtod()
的原型。