math_ult是lua库函数math.ult的具体实现。math_ult的目的是将传入的两个参数转化成无符号整数之后,再进行大小的比较。请你注意:虽然math_ult不要求你传入的两个参数就是lua_Integer类型,但是只接受lua_Integer、lua_Number和字符串,并且需要你保证传入的参数能正确转换成lua_Integer类型。 math_ult的声明如下:
static int math_ult (lua_State *L);
math_ult的实现:
static int math_ult (lua_State *L) {
lua_Integer a = luaL_checkinteger(L, 1);
lua_Integer b = luaL_checkinteger(L, 2);
lua_pushboolean(L, (lua_Unsigned)a < (lua_Unsigned)b);
return 1;
}
由上述代码可知,math_ult先尝试将传入的2个参数转换成整数a、b;转换成功后,将a、b强制转换成lua_Unsigned类型后,进行比较:
最后,为什么命名为math_ult?math_ult可理解为**“math unsigned less than”**。