【发布时间】:2016-07-18 16:18:39
【问题描述】:
让下面的代码:
lua_pushinteger( m_pLuaState, 123 );
const char * sAsString = lua_tostring( m_pLuaState, -1 );
返回指向包含奇怪数值的字符串的非 NULL 指针,例如 "17137503626592379" 或 "14326121113845883" 等...
似乎随机,不违反内存(至少在几次尝试中),并且返回的字符串总是包含有效的数值,尽管不是我首先传递的(即 123)。
我认为这与浮点/整数转换有关。
我使用Lua 5.3.2,它支持“整数”和“浮点”作为“数字”的两个子类型,我使用浮点数表示数字,整数表示整数。
我同时使用 Windows CE 和 Windows 7。在两个平台上,“int”和“float”都是 32 位,尽管我的 Windows 7 是 64 位,因为我明确地为 x86 编译。
这是我的 luaconf.h 的一部分
#if !defined(LUA_INT_TYPE)
#define LUA_INT_TYPE LUA_INT_INT
#endif
#if !defined(LUA_FLOAT_TYPE)
#define LUA_FLOAT_TYPE LUA_FLOAT_FLOAT
#endif
在写这篇文章时,我意识到这可能是因为我更改了正在使用的类型,而没有重新编译我正在链接的静态 lua .lib。这可能是因为这个吗?我会尝试重新编译...
这可能是由于其他原因吗?谢谢。
【问题讨论】:
标签: c lua floating-point