
lua
用生命写代码--码农的命
上善若水
展开
-
lua之诡异的tonumber
昨晚翻看lua源码的时候,发现在luaO_str2num有特殊处理,确切来说是在l_str2int(字符串转换成整形),lstr2d(字符串转换成double类型)size_t luaO_str2num (const char *s, TValue *o) { lua_Integer i; lua_Number n; const char *e; if ((e = l_str2int(原创 2016-07-14 11:35:08 · 16346 阅读 · 0 评论 -
lua之诡异的#
lua中的#是获取table中有序序列的个数。例如:local t = {a = 1, 1,3,4,5,6}print(#t)--5在table的实现中,有两种方式保存元素,一种 数组,一种hash散列表。#就是获取table中的数组元素个数。例如上面代码就是获取数组的个数。其中a = 1保存在散列表中。如果在table中增加几个nil,会有什么问题呢?local t = {a原创 2016-07-14 15:46:45 · 618 阅读 · 0 评论 -
lua编译32位
一个星期之前,有一个网友在群里问为什么lua-5.1的lua_number类型为4字节,为什么不是double类型的8字节?带着这个问题,翻看了lua-5.3的代码,在默认情况lua_number都是8字节的。验证如下:a为8字节,如果输出为-1,说明就是64bit(-1在64bit有符号的二进制为0xFFFFFFFFFFFFFFFF)输出结果为:说明在默认情况下lua中numbe原创 2016-09-23 09:47:08 · 2344 阅读 · 2 评论