+-
C/C++ int32_t和printf格式:%d或%ld?
参见英文答案 > printf format specifiers for uint32_t and size_t                                    4个
>             How to print a int64_t type in C                                    6个
在某些平台中,int32_t(来自stdint.h)是long int,但在其他平台中,它可能是int.当我想使用printf时,如何确定应该使用哪种格式“%ld”或“%d”?

或者,也许,我应该强制将其转换为如下所示:

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实现要求用户在#include< inttypes.h>之前编写#define __STDC_FORMAT_MACROS 1,即使C标准指定不需要.

点击查看更多相关文章

转载注明原文:C/C++ int32_t和printf格式:%d或%ld? - 乐贴网