【发布时间】:2009-01-20 17:52:17
【问题描述】:
我将 64 位计数器的变量声明为:
long long call_count;
我应该在打印语句中使用什么格式说明符?
我试过了,%l、%ld、%ll。似乎没有一个是正确的。
我使用 Diab C 编译器来编译我的应用程序代码以在 pSOS 操作系统上运行。
【问题讨论】:
标签: c
我将 64 位计数器的变量声明为:
long long call_count;
我应该在打印语句中使用什么格式说明符?
我试过了,%l、%ld、%ll。似乎没有一个是正确的。
我使用 Diab C 编译器来编译我的应用程序代码以在 pSOS 操作系统上运行。
【问题讨论】:
标签: c
根据 C99,它应该是“%lld”(例如,参见here)。如果 Diab C 不是 C99,那么您必须查看编译器文档,我似乎无法通过快速谷歌搜索在线找到该文档。
【讨论】:
它是"%lli"(或等效的"%lld")
【讨论】:
Microsoft 和 Watcom 使用 %I64d(大写的眼睛),其他使用 %lld(小写的 ell ell)。
【讨论】:
fixed width 中的歧义较少(前提是使用了合理的固定宽度字体)。
这里已经描述了这一点,甚至更多: cross-platform printing of 64-bit integers with printf
TL;DR: 您可以使用 PRId64 宏(来自 inttypes.h)以半可移植的方式打印十进制的 64 位整数。还有其他宏(如 PRIx64)。
【讨论】:
也许%lld?我认为这是gcc的格式,对Diab C编译器一无所知。
【讨论】:
有符号是 %lld,无符号是 %llu
【讨论】:
long long t1; //signed
unsigned long long t2; //unsigned
printf("%lld",t1);
printf("%llu",t2);
【讨论】: