为了账号安全,请及时绑定邮箱和手机立即绑定

我应该如何打印类似off_t和size_t的类型?

我应该如何打印类似off_t和size_t的类型?

C
不负相思意 2019-12-12 13:44:39
我正在尝试打印诸如off_t和的类型size_t。printf() 便携式的正确占位符是什么?还是有一种完全不同的方式来打印这些变量?
查看完整描述

3 回答

?
天涯尽头无女友

TA贡献1831条经验 获得超9个赞

您可以将zsize_t和tptrdiff_t用于


printf("%zu %td", size, ptrdiff);

但是我的联机帮助页上说,一些较早的库使用的字符不同于,z并且不鼓励使用它。但是,它是标准化的(通过C99标准)。对于那些intmax_t和int8_t的stdint.h等等,还有你可以使用宏,像另一个回答说:


printf("value: %" PRId32, some_int32_t);

printf("value: %" PRIu16, some_uint16_t);

它们列在的联机帮助页中inttypes.h。


就个人而言,我只想投的价值观unsigned long或long像另一个答案建议。如果使用C99,则可以(当然应该)强制转换为unsigned long longor,long long并分别使用%lluor %lld格式。


查看完整回答
反对 回复 2019-12-12
?
杨魅力

TA贡献1811条经验 获得超6个赞

对于Microsoft,答案是不同的。VS2013在很大程度上符合C99,但“不支持hh,j,z和t长度前缀。” 对于size_t“即在32位平台上为无符号__int32,在64位平台上为无符号__int64”,请使用前缀I(大写字母)以及类型说明符o,u,x或X。 请参见VS2013大小规范


至于off_t,它在VC \ include \ sys \ types.h中定义为long。


查看完整回答
反对 回复 2019-12-12
  • 3 回答
  • 0 关注
  • 1363 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信