如何消除这些 c++ 警告?

警告:从lua_Number转换为int的参数

我使用lua_tonumber函数时收到这些警告。问题在哪里?

原文链接 https://stackoverflow.com/questions/7004718

点赞
stackoverflow用户88888888
stackoverflow用户88888888

基于提供的和稀疏的信息,我的答案是:

lua_Number是一个双精度浮点数。因此它在转换为整数时会报错。

最简单的转换方法是:

lua_Number a = 3.7;
int b;
b = static_cast<int>(a)

然而,b将会变成3。如果你想四舍五入,你可以这样做:

lua_Number a = 3.7;
int b;
b = static_cast<int>(a+0.5)

这样,你可以确保每个数都被四舍五入到最接近的整数。

但是在这里,你需要自己决定要使用哪种解决方案。

2011-08-10 00:53:05
stackoverflow用户434004
stackoverflow用户434004

http://pgl.yoyo.org/luai/i/lua_tonumber

lua_Number lua_tonumber(lua_State * L,int index);

它需要一个int作为第二个参数。您的警告说得很有帮助:“从lua_Number'到int'的参数”。所以您可能正在为第二个参数传递一个'lua_Number',而不是一个int。 'lua_Number'是一个double。

由于它是Lua堆栈中的索引号,因此传递双倍没有任何意义。我会检查您的代码,因为传递lua_Number可能是一个错误。

2011-08-10 01:09:53
stackoverflow用户801651
stackoverflow用户801651

尝试使用 static_cast?这通常会忽略警告,但我对 Lua 不熟悉。

2011-08-10 01:33:57
stackoverflow用户107090
stackoverflow用户107090

当您想从lua_Number获取int时,请使用lua_tointeger

2011-08-10 01:46:55