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