跳转到内容

C 编程/inttypes.h

来自维基教科书,开放的书籍,为开放的世界

inttypes.h 文件是 C 头文件,它是 C 标准库API 的一部分。它是在 ISO C 标准的 1999 版本(称为 C99)中添加的。它 包含 stdint.h 头文件,并为使用 printfscanf 函数系列定义了许多 ,以及用于处理 intmax_t 类型的函数。

宏的命名约定和格式说明符

[编辑 | 编辑源代码]

在 inttypes.h 中定义的宏遵循一种规律模式,以简化使用。遵循的模式如下[1] 

前三个字符
[编辑 | 编辑源代码]
第四个字符
[编辑 | 编辑源代码]
剩余字符
[编辑 | 编辑源代码]
  • N 用于 N 大小分配给数据类型(例如,对于 整数 为 32 位大小,对于无符号 int 为 16 位大小,等等)
  • PTR 用于 指针
  • MAX 用于最大支持的位大小
  • FAST,其含义没有明确定义,留给实现来决定“快速”整数数据类型的含义。

下表给出了 inttypes.h 中列出的各种数据类型使用的语法[2][3]

固定宽度整数 带符号 无符号
8 位 int8_t uint8_t
16 位 int16_t uint16_t
32 位 int32_t uint32_t
64 位 int64_t uint64_t
小 & 固定整数类型 带符号 无符号
8 位 int_least8_t uint_least8_t
16 位 int_least16_t uint_least16_t
32 位 int_least32_t uint_least32_t
64 位 int_least64_t uint_least64_t
快速 & 固定整数类型 带符号 无符号
8 位 int_fast8_t uint_fast8_t
16 位 int_fast16_t uint_fast16_t
32 位 int_fast32_t uint_fast32_t
64 位 int_fast64_t uint_fast64_t

基本原理

[编辑 | 编辑源代码]

16 位、32 位和 64 位系统等不同处理器中的处理速度差异要求各种数据类型具有统一的大小。ISO/IEC 9899:1990 规定该语言应支持 char、int、short 和 long 等基本数据类型,但没有限制这些数据类型的最小或最大大小,除了 int 至少为 16 位长,long 为 32 位长。

在 16 位系统中,大多数实现分别为 char、short、int 和 long 数据类型分配了 8、16、16 和 32 位。在 32 位系统中,它分别为 char、short、int 和 long 数据类型分配了 8、16、32 和 32 位[1]。int 大小上的差异给从一个系统迁移到另一个系统的用户带来了问题。

包含此头文件的主要目的是限制,或者换句话说,将 int 数据类型的确切大小限制为特定值(可能是 16 位或 32 位)[4]。它还可用于通过使用头文件中列出的宏将无符号 int 和带符号 int 等数据类型修饰符的大小限制为特定值[5]

另请参阅

[编辑 | 编辑源代码]

参考文献

[编辑 | 编辑源代码]
  1. a b http://manpages.ubuntu.com/manpages/gutsy/man7/inttypes.h.7posix.html
  2. https://cppreference.cn/w/cpp/types/integer
  3. http://linux.die.net/man/3/int64_t
  4. 开放组规范第 6 版. "应用程序使用和基本原理". IEEE 和开放组.
  5. 开放组规范第 6 版. "应用程序使用和基本原理". IEEE 和开放组基础. 检索于 2011 年 9 月 14 日. {{cite web}}: 请检查日期值: |accessdate= (帮助)
[编辑 | 编辑源代码]
华夏公益教科书