首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >C打印说明符%ld打印字符"ld“

C打印说明符%ld打印字符"ld“
EN

Stack Overflow用户
提问于 2019-10-04 02:10:21
回答 2查看 602关注 0票数 1

我正在使用gcc (-std=gnu99)开发一个嵌入式工具链(Myriota),而且我对printf有问题。

当我尝试以下代码时:

代码语言:javascript
运行
复制
long long int time = TimeGet();
printf("\nSeconds since epoch: %lld\r\n", time);

它打印:

代码语言:javascript
运行
复制
Seconds since epoch: ld

使用"%" PRId64打印相同的"ld“。

有什么想法吗?如果你能带我去正确的地方,我会很感激的。

编辑变量类型修正的long long int time

EN

回答 2

Stack Overflow用户

发布于 2019-10-04 03:35:03

最有可能的是,您的C库,特别是它的printf实现不支持C99。

long long int类型和%lld格式是1999年ISO C标准(C99)提出的。使用gcc -std=c99使编译器尝试遵从C99,但它不能使运行时库做它没有实现的事情。编译器支持的和运行时库支持的不匹配。

在C90中,使用格式字符串中的%lld调用printf具有未定义的行为。

%ld是否适用于long int类型的参数?如果参数不超过LONG_MAX,那么转换和使用%ld可能是一个很好的解决办法。如果需要打印超出LONG_MAX的值,实现long long int到字符串的转换并不困难。

票数 4
EN

Stack Overflow用户

发布于 2019-10-06 01:40:05

Myriota SDK使用的是newlib-nano,它不支持int64_t,我必须实现自己的函数才能转换为cast,或者强制转换为uint32_t。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58229030

复制
相关文章

相似问题

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