This question already has answers here:
printf format specifiers for uint32_t and size_t

(4个答案)



How to print a int64_t type in C

(6个答案)


4年前关闭。




在某些平台上,int32_t(来自stdint.h)是long int,但是在其他平台上,它可能是int。当我想使用printf时,如何确定应使用哪种格式"%ld""%d"

或者,也许我应该强制将其转换为long,如下所示:
int32_t m;
m = 3;
printf ("%ld\n", (long)m);

但是该解决方案是乏味的。有什么建议么?

最佳答案

在C中(从C99开始),inttypes.h包含宏,这些宏扩展为固定宽度类型的格式说明符。对于int32_t:

printf("%" PRId32 "\n", m);

该宏可能会扩展为"d""ld"。您可以放置​​常用的修饰符,例如:
printf("%03" PRId32 "\n", m);

在C++中(自C++ 11起),#include <inttypes.h>#include <cinttypes>可使用相同的功能。

显然,某些C++实现要求用户在#define __STDC_FORMAT_MACROS 1之前编写#include <inttypes.h>,即使C++ Standard规定不需要这样做。

关于C++/C int32_t和printf格式: %d or %ld?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40121748/

10-12 23:56