If you check some lua docs, you can see:
There are eight basic types in Lua: nil, boolean, number, string, userdata, function, thread, and table.
What purpose then do the C API functions, such as lua_pushunsigned() and lua_pushinteger() serve, since a lua number type is usually defined as some floating point type (e.g. double)? Why not just lua_pushnumber()?