跳转到内容

C 编程/inttypes.h

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

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

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

[编辑 | 编辑源代码]

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

前三个字符
[编辑 | 编辑源代码]
第四个字符
[编辑 | 编辑源代码]
剩余字符
[编辑 | 编辑源代码]
  • N 用于 N 大小分配给数据类型(例如,32 用于 整数 的 32 位大小,16 用于无符号整数的 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]。它还可以通过使用头文件中列出的宏,将数据类型修饰符(如无符号整数和有符号整数)的大小限制为特定值[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. The Open Group Specifications Issue 6. "应用程序使用和基本原理". IEEE 和 The Open Group.
  5. The Open Group 规范 Issue 6. "应用程序使用和原理". IEEE 和 The Open Group 基础. 检索于 2011 年 9 月 14 日. {{cite web}}: 检查日期值:|accessdate= (帮助)
[编辑 | 编辑源代码]
华夏公益教科书