string.format (formatstring, ···)
返回其变量数量的参数的格式化版本,遵循其第一个参数(必须是字符串)中给出的描述。格式字符串遵循与ISO C函数sprintf相同的规则。唯一的区别是不支持选项/修饰符*, h, L, l, n, and p
,并且还有一个额外选项q
。
Lua 5.3不支持lld
,如何在Lua 5.3中打印lld
?
答案 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"
//...