gpt4 book ai didi

C printf 说明符 %lld 打印字符 "ld"

转载 作者:太空宇宙 更新时间:2023-11-04 01:16:18 25 4
gpt4 key购买 nike

我正在使用 gcc (-std=gnu99) 开发嵌入式工具链 (Myriota),但我在 printf 方面遇到了问题。

当我尝试以下代码时:

long long int time = TimeGet();
printf("\nSeconds since epoch: %lld\r\n", time);

它打印:

Seconds since epoch: ld

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

有什么想法吗?如果您能指出我正确的位置,我将不胜感激。

编辑变量类型更正 long long int time

最佳答案

很有可能,您的 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 到字符串的转换并不难。

关于C printf 说明符 %lld 打印字符 "ld",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58229030/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com