如果你想使用inttypes.h中的int32_t, int64_t,uint64_t等数据类型,如何对其进行printf是需要仔细考虑的。
在32位平台和64位平台对uint64_t的定义是不同的:
32位平台: typedef unsigned long long int uint64_t;
64位平台: typedef unsigned long int uint64_t;
因此,在这两种平台里printf 一个 uint64_t的变量时就会遇到问题,是选择%llu 还是 %lu就成为了一个问题。
这时候,我们就需要使用inttypes.h中定义的配套宏进行正确的printf。
#define __STDC_FORMAT_MACROS //如果是C++,还需要包括这个宏
#include <inttypes.h> // now PRIu64 will work
#include <stdio.h>
int main()
{
uint64_t x;
uint32_t y;
printf("x: %"PRId64", y: %"PRId32"\n", x, y);
return 0;
}

本文介绍如何在不同平台上正确地打印uint64_t类型的数据。通过使用inttypes.h中的宏,可以确保在32位和64位平台上都能正确输出uint64_t变量。
1762

被折叠的 条评论
为什么被折叠?



