首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >%PRId和%d格式的字符有什么区别?

%PRId和%d格式的字符有什么区别?
EN

Stack Overflow用户
提问于 2019-01-19 22:22:14
回答 2查看 470关注 0票数 3

考虑以下代码:

代码语言:javascript
运行
复制
#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在你的硬件/机器上的类型定义有关系吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-01-19 22:25:10

int使用%d,对int32_t使用PRId32

也许在您的平台上,int32_t只是int的一个类型定义,但通常情况并非如此。使用错误的说明符会调用未定义的行为,应该避免。

正如@EricPostpischil指出的那样,请注意,在带引号的格式字符串内使用%d,而在外部使用PRId32。这样做的原因是PRId32是一个宏,它展开为字符串文字,然后连接在一起。

票数 6
EN

Stack Overflow用户

发布于 2019-01-19 22:25:17

类型int要求至少有16位的值表示,尽管在大多数台式计算机和编译器上它将有32位。因此,int通常可能与int16_tint32_tint64_t相同,也可能与上述任何一种都不相同。

对于int类型的变量使用"%d",对于int32_t类型的变量使用"%" PRId32

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54268035

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档