首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Lua 5.3中打印lld

如何在Lua 5.3中打印lld
EN

Stack Overflow用户
提问于 2015-03-14 03:48:12
回答 1查看 2.4K关注 0票数 3
代码语言:javascript
复制
string.format (formatstring, ···)

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

Lua5.3不支持lld,我如何在Lua5.3中打印lld

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-03-14 04:29:32

简单回答:使用%d

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

在Lua5.3中,类型number有两个内部表示,整数和浮点数。在标准Lua中,整数表示为64位.无论其内部表示形式如何,都可以使用%d打印它:

代码语言:javascript
复制
print(string.format("%d", 2^62))

输出:4611686018427387904

在Lua源文件luaconf.h中,可以看到Lua将%d转换为批准格式:

代码语言:javascript
复制
#define LUA_INTEGER_FMT     "%" LUA_INTEGER_FRMLEN "d"

如果使用不同的整数内部表示形式,则LUA_INTEGER_FRMLEN被定义为"""l""ll"

代码语言:javascript
复制
#if defined(LLONG_MAX)      /* { */
/* use ISO C99 stuff */
#define LUA_INTEGER     long long
#define LUA_INTEGER_FRMLEN  "ll"
//...
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29045225

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档