如何在 Lua 5.3 中打印 lld
How to print lld in Lua 5.3
string.format (formatstring, ···)
Returns 其可变数量参数的格式化版本遵循其第一个参数(必须是字符串)中给出的描述。格式字符串遵循与 ISO C 函数 sprintf 相同的规则。唯一的区别是不支持 options/modifiers *, h, L, l, n, and p
并且有一个额外的选项 q
.
Lua 5.3 不支持 lld
,如何在 Lua 5.3 中打印 lld
?
简答:使用%d
.
在Csprintf
中,%lld
用于格式化一个long long
类型,至少是64位的整数类型。
在Lua 5.3中,类型number
有两种内部表示,integer和float。整数表示在标准 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"
//...
string.format (formatstring, ···)
Returns 其可变数量参数的格式化版本遵循其第一个参数(必须是字符串)中给出的描述。格式字符串遵循与 ISO C 函数 sprintf 相同的规则。唯一的区别是不支持 options/modifiers *, h, L, l, n, and p
并且有一个额外的选项 q
.
Lua 5.3 不支持 lld
,如何在 Lua 5.3 中打印 lld
?
简答:使用%d
.
在Csprintf
中,%lld
用于格式化一个long long
类型,至少是64位的整数类型。
在Lua 5.3中,类型number
有两种内部表示,integer和float。整数表示在标准 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"
//...