// 获取第二个函数参数 double b = luaL_checknumber(L, 2); printf("第二个参数:%fn", b);
// 设置函数返回值 lua_pushnumber(L, a + b);
// 函数返回值的数量,在这里函数返回值为1 return1; }
staticinti_swap(lua_State * L) { int i = lua_tointeger(L, 1); int j = lua_tointeger(L, 2); printf("%d 和 %d 交换位置n", i, j);
lua_pushinteger(L, j); lua_pushinteger(L, i);
return2; }
// 计算斐波拉契数列 staticinti_fib(lua_State * L) { // lua_Integer长度为64位,防止溢出(事实上当n的值达到100左右即使64位也会发生溢出了) lua_Integer sum = 0; lua_Integer a = 0; // n - 2 lua_Integer b = 0; // n - 1
int n = lua_tointeger(L, 1); int i = 0; while (i <= n) { // printf("sum is %dn", sum); i++; if (i == 1) { a = 0; b = 1; } sum = a + b; a = b; b = sum; }