查看 Linux、 OS X 和 OpenBSD 上的 man 3 printf都显示了对 %z for size_t和 %t for ptrdiff_t(for C99)的支持,但是没有一个提到 off_t。建议在野外通常提供 %u转换为 off_t,这是“足够正确的”,因为我可以告诉(无论是 unsigned int和 off_t之间的64位和32位系统完全不同)。
对于微软来说,答案是不同的。VS2013基本上与 C99兼容,但是不支持“[ t ] he hh,j,z 和 t 长度前缀”对于 size _ t
“也就是说,32位平台上的 unsigned _ _ int32,64位平台上的 unsigned _ _ int64”使用前缀 I (大写眼)和类型说明符 o、 u、 x 或 X