gpt4 book ai didi

使用 printf 跨平台打印 64 位整数

转载 作者:太空狗 更新时间:2023-10-29 16:23:45 31 4
gpt4 key购买 nike

在 Windows 中,它是“%I64d”。在 Linux 和 Solaris 中,它是“%lld”。
如果我想编写打印 long long 值的跨平台 printfs:这样做的好方法是什么?

long long ll;
printf(???, ll);

最佳答案

有几种方法。

您可以以符合 C99 的方式编写代码,然后在编译器编写者让您失望时提供特定于系统的 hack。 (遗憾的是,这在 C99 中很常见。)

#include <stdint.h>
#include <inttypes.h>

printf("My value is %10" PRId64 "\n", some_64_bit_expression);

如果您的目标系统之一忽略了执行 <inttypes.h>或者因为某些类型特征是可选的而以其他方式极其懈怠,那么你只需要一个系统特定的 #define对于 PRId64 (或其他)在该系统上。

另一种方法是选择目前始终实现为 64 位且受 printf 支持的内容,然后进行转换。不完美,但通常会做到:

printf("My value is %10lld\n", (long long)some_64_bit_expression);

关于使用 printf 跨平台打印 64 位整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6299083/

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