猿问

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

我正在尝试打印诸如off_t和的类型size_tprintf() 便携式的正确占位符什么?

还是有一种完全不同的方式来打印这些变量?


不负相思意
浏览 1364回答 3
3回答

天涯尽头无女友

您可以将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格式。

杨魅力

对于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。
随时随地看视频慕课网APP
我要回答