3
string.format (formatstring, ···)

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

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

4

1 回答 1

3

简短的回答:使用%d.


在 Csprintf中,%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"
//...
于 2015-03-14T04:29:32.190 回答