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年前关闭。
在某些平台上,
或者,也许我应该强制将其转换为long,如下所示:
但是该解决方案是乏味的。有什么建议么?
该宏可能会扩展为
在C++中(自C++ 11起),
显然,某些C++实现要求用户在
(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