首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Lua在c++中的奇怪行为,我不能理解?

Lua在c++中的奇怪行为,我不能理解?
EN

Stack Overflow用户
提问于 2012-08-13 00:57:52
回答 1查看 124关注 0票数 2

关于C++中使用的这个简单的LUA脚本代码,我有一个问题。

代码语言:javascript
复制
Main.cpp
#include <iostream>
using namespace std;
extern "C"
{
#include "lua.h"
#include "lualib.h"
#include "lauxlib.h"
}
int main()
{
    lua_State *L=luaL_newstate();
    luaL_openlibs(L);
    luaL_loadfile(L,"script.lua");
    lua_call(L,0,1);
    int n;
    n=lua_tonumber(L,-1);  // Can be changed to 0 and i gain the same result as -1
    cout<<n<<endl;
    lua_close(L);
    cout<<"test"<<endl;
    return 0;
}

script.lua
print("Hello world")
return 10

程序正常工作,并向控制台返回10,但问题是,为什么当我将lua_tonumber(L,-1) -1更改为0时,它仍然返回10?堆栈中似乎有两个10,一个索引为0,另一个索引为-1。但是为什么呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-08-13 02:18:44

来自Lua文档:

正索引表示绝对堆栈位置(从1开始);负索引表示相对于堆栈顶部的偏移量。

0索引在Lua中是不允许的,并且行为是未定义的(可能它只是将0更改为1,但您不应该依赖它)。

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

https://stackoverflow.com/questions/11924027

复制
相关文章

相似问题

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