栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

如何使用printf显示off_t,nlink_t,size_t和其他特殊类型?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

如何使用printf显示off_t,nlink_t,size_t和其他特殊类型?

没有一种完全可移植的方式来执行此操作,这很麻烦。

C99提供了一种针对内置类型的机制,例如

size_t
带有
%zu
符号(并且还有一些额外的类似的限定词)。

它还为

<inttypes.h>
标头提供诸如PRIX32之类的宏,以定义用于打印32位十六进制常数的正确限定符(在这种情况下):

printf("32-bit integer: 0x%08" PRIX32 "n", var_of_type_int32_t);

对于系统定义的类型(例如POSIX定义的类型),AFAIK,没有好的方法来处理它们。因此,我要做的是快速猜测“安全”转换,然后据此进行打印,包括演员表,这就是您在问题中所说明的。这令人沮丧,但是我知道没有更好的方法。如有疑问,请使用C99,然后转换为“unsignedlonglong”是相当不错的;可能需要使用

uintmax_t
强制转换为PRIXMAX或等效版本。

或者,正如FUZxxl提我的那样,您可以使用修饰符

j
指示“最大”整数类型。例如:

printf("Maximal integer: 0x%08jXn", (uintmax_t)var_of_type_without_format_letter);


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/394158.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号