gpt4 book ai didi

c++ - 我无法理解的 C++ 中的 Lua 奇怪行为?

转载 作者:搜寻专家 更新时间:2023-10-31 01:52:53 25 4
gpt4 key购买 nike

我对这个在 C++ 中使用的 LUA 脚本的简单代码有疑问。

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。但为什么?

最佳答案

来自 Lua 文档:

A positive index represents an absolute stack position (starting at 1); a negative index represents an offset relative to the top of the stack.

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

关于c++ - 我无法理解的 C++ 中的 Lua 奇怪行为?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11924027/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com