对于特殊数据类型如:off_t输出

最近在学习整型溢出漏洞的时候碰到off_t等这样嵌套很深的数据类型,对于理解程序带来了大量的麻烦和误解,特来记录下学习到的解决办法

  1. C 语言可以统一转换为 long long 再用 %lld 输出。如果需要更加高精度的结果可以参考cplusplus比如int64_t,但需要注意的是,此时%lld输出只适合在32位平台上。比较好的方法是使用PRId64来格式化输出,从而实现跨平台(当然首先需要提前定义好宏)
 #ifndef __STDC_FORMAT_MACROS
 #define __STDC_FORMAT_MACROS
 #endif
 ..........
 #include//头文件

需要提到的一点是c++11直接支持,可以不必添加该宏(_STDC_FORMAT_MACROS)
3. 带 _t 后缀的,只有 intmax_t/uintmax_t 用 %jd/%ju;ptrdiff_t 用 %t;size_t/ssize_t 用 %zu/%zd。
4. int16_t 等等,它们的格式化字符串都有,在 中。

你可能感兴趣的:(对于特殊数据类型如:off_t输出)