首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Lua布尔值不能像数字一样比较吗?

Lua布尔值不能像数字一样比较吗?
EN

Stack Overflow用户
提问于 2015-02-12 12:22:48
回答 1查看 1.2K关注 0票数 2

我使用Lua5.3CAPI

我使用Lua与脚本建模设备进行通信。Lua脚本描述设备的行为。这里是从Lua调用的C函数

代码语言:javascript
复制
static int
lua_get_pin_bool ( lua_State* L )
{
    lua_Number argnum = lua_gettop ( L );
    if ( 1 > argnum )
    {
        out_error ( "Function %s expects 1 arguments got %d\n", __PRETTY_FUNCTION__, argnum );
        return 0;
    }
    int32_t pin_num = lua_tonumber ( L, -1 );
    bool state = get_pin_bool ( device_pins[pin_num]);
    if ( -1 == state )
    {       
        lua_pushnil(L);
        return 1;
    }
    lua_pushboolean ( L,  state);
    return 1;
}

以及相应的Lua函数(get_pin_bool调用lua_get_pin_bool)

代码语言:javascript
复制
function device_simulate()
    for i = 0, 14 do
        if 1 == get_pin_bool(_G["A"..i]) then
            ADDRESS = set_bit(ADDRESS, i)
        else
            ADDRESS = clear_bit(ADDRESS, i)
        end
    end
    for i = 0, 7 do
        set_pin_bool(_G["D"..i], get_bit(string.byte(rom, ADDRESS), i))
    end
end

在Lua中,get_pin_bool实际上从未被返回。lua_pushboolean返回,C代码工作正常。如果我将其更改为lua_pushnumber,则所有操作都正确。事实上,它并不影响库的逻辑,但我不明白为什么它会破坏Lua。我在C中加了状态变量,它总是0或1。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-02-12 12:46:27

在这里,您的脚本逻辑有问题

代码语言:javascript
复制
if 1 == get_pin_bool(_G["A"..i]) then

lua不是C。布尔值不等于数字1(或任何其他数字)。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28477384

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档