我正在尝试打印诸如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格式。
杨魅力
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。
- 3 回答
- 0 关注
- 1363 浏览
添加回答
举报
0/150
提交
取消