如何在Lua 5.3中打印lld

时间:2015-03-14 03:48:12

标签: lua string.format lua-5.3

string.format (formatstring, ···)

返回其变量数量的参数的格式化版本,遵循其第一个参数(必须是字符串)中给出的描述。格式字符串遵循与ISO C函数sprintf相同的规则。唯一的区别是不支持选项/修饰符*, h, L, l, n, and p,并且还有一个额外选项q

Lua 5.3不支持lld,如何在Lua 5.3中打印lld

1 个答案:

答案 0 :(得分:2)

简答:使用%d


在C sprintf中,%lld用于格式化long long类型,这是一个至少为64位的整数类型。

在Lua 5.3中,类型number有两个内部表示,整数和浮点数。标准Lua中的整数表示为64位。无论内部表示如何,您都可以使用%d进行打印:

print(string.format("%d", 2^62))

输出:4611686018427387904


在Lua源文件luaconf.h中,您可以看到Lua将%d转换为适当的格式:

#define LUA_INTEGER_FMT     "%" LUA_INTEGER_FRMLEN "d"
如果使用不同的整数内部表示,则

LUA_INTEGER_FRMLEN定义为"""l""ll"

#if defined(LLONG_MAX)      /* { */
/* use ISO C99 stuff */
#define LUA_INTEGER     long long
#define LUA_INTEGER_FRMLEN  "ll"
//...