考虑以下代码:
#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
复制相似问题