考虑以下代码:
#include <stdio.h>
#include <inttypes.h>
void main(void)
{
int32_t a = 44;
fprintf(stdout, "%d\n", a);
fprintf(stdout, "%"PRId32"\n", a);
}
什么时候使用%d
更好,什么时候使用"%"PRId32
更好?这两种格式字符有什么不同?这和int32_t
在你的硬件/机器上的类型定义有关系吗?
发布于 2019-01-19 22:25:10
对int
使用%d
,对int32_t
使用PRId32
。
也许在您的平台上,int32_t
只是int
的一个类型定义,但通常情况并非如此。使用错误的说明符会调用未定义的行为,应该避免。
正如@EricPostpischil指出的那样,请注意,在带引号的格式字符串内使用%d
,而在外部使用PRId32
。这样做的原因是PRId32
是一个宏,它展开为字符串文字,然后连接在一起。
发布于 2019-01-19 22:25:17
类型int
要求至少有16位的值表示,尽管在大多数台式计算机和编译器上它将有32位。因此,int
通常可能与int16_t
、int32_t
、int64_t
相同,也可能与上述任何一种都不相同。
对于int
类型的变量使用"%d"
,对于int32_t
类型的变量使用"%" PRId32
。
https://stackoverflow.com/questions/54268035
复制相似问题