stdint.h头文件中使用typedef工具创建整数类型名,指定整数的属性。stdint.h头文件包含在inttypes.h中,后者提供输入/输出函数调用的宏。
stdint.h头文件中用一组typedef标识精确宽度的类型。
| 确切宽度类型 | |
| typedef名 | 属性 |
| int8_t | 8位,有符号 |
| int16_t | 16位,有符号 |
| int32_t | 32位,有符号 |
| int64_t | 64位,有符号 |
| uint8_t | 8位,无符号 |
| uint16_t | 16位,无符号 |
| uint32_t | 32位,无符号 |
| uint64_t | 64位,无符号 |
| 注意,并不是所有的系统都支持其中的所有类型。 | |
| 最小宽度类型 | |
| int_least8_t | 至少8位,有符号 |
| int_least16_t | 至少16位,有符号 |
| int_least32_t | 至少32位,有符号 |
| int_least64_t | 至少64位,有符号 |
| uint_least8_t | 至少8位,无符号 |
| uint_least16_t | 至少16位,无符号 |
| uint_least32_t | 至少32位,无符号 |
| uint_least64_t | 至少64位,无符号 |
| 最小宽度类型保证其类型的大小至少是某数量位,系统中一定会有这些类型。 | |
| 最快最小宽度类型 | |
| int_fast8_t | 至少8位有符号 |
| int_fast16_t | 至少16位有符号 |
| int_fast32_t | 至少32位有符号 |
| int_fast64_t | 至少64位有符号 |
|
uint_fast8_t |
至少8位无符号 |
|
uint_fast16_t |
至少16位无符号 |
|
uint_fast32_t |
至少32位无符号 |
| uint_fast64_t | 至少64位无符号 |
| 在特定系统中,使用某些整数类型比其整数类型更快。 | |
| 最大宽度类型 | |
| intmax_t | 最大宽度的有符号类型 |
| uintmax_t | 最大宽度的无符号类型 |
| 这种类型的变量可以储存系统中的任意整数值,还要考虑符号。 | |
| 可储存指针值的整数类型 | |
| intptr_t | 可储存指针值的有符号类型 |
| uintptr_t | 可储存指针值的无符号类型 |
| 它们可以精确地储存指针值。也就是说,如果把一个void *类型的值赋给这种类型的变量,然后再把该类型的值赋回给指针,不会丢失任何信息。系统可能不支持这类型。 | |
| 整型常量 | |
| 常量标识符 | 最小值 |
| INTN_MIN | 等于-(2N-1-1) |
| INTN_MAX | 等于2N-1-1 |
| UINTN_MAX | 等于2N-1-1 |
| INT_LEASTN_MIN | -(2N-1-1) |
| INT_LEASTN_MAX | 2N-1-1 |
| UINT_LEASTN_MAX | 2N-1 |
| INT_FASTN_MIN | -(2N-1-1) |
| INT_FASTN_MAX | 2N-1-1 |
| UINT_FASTN_MAX | 2N-1 |
| INTPTR_MIN | -(215-1) |
| INTPTR_MAX | 215-1 |
| UINTPTR_MAX | 216-1 |
| INTMAX_MIN | -(215-1) |
| INTMAX_MAX | 263-1 |
| UINTMAX_MAX | 264-1 |
| 这些常量用于表示该头文件中所定义类型的限定值。常量都根据类型命名,即用_MIN或_MAX代替类型名中的_t,然后把所有字母大写即得到表示该类型最小值或最大值的常量名。例如,int32_t类型的最小值是INT32_MIN、uint_fast16_t的最大值是UINT_FAST16_MAX。此表总结了这些常量以及与之相关的intptr_t、uintptr_t、intmax_t和uintmax_t类型,其中的N表示位数。这些常量的值应等于或大于(除非指明了一定要等于)所列的值。 | |
| 其他整型常量 | |
| 常量标识符 | 含义 |
| PTRDIFF_MIN | ptrdiff_t类型的最小值 |
| PTRDIFF_MAX | ptrdiff_t类型的最大值 |
| SIG_ATOMIC_MIN | sig_atomic_t类型的最小值 |
| SIG_ATOMIC_MAX | sig_atomic_t类型的最大值 |
| WCHAR_MIN | wchar_t类型的最小值 |
| WCHAR_MAX | wchar_t类型的最大值 |
| WINT_MIN | wint_t类型的最小值 |
| WINT_MAX | wint_t类型的最大值 |
| SIZE_MAX | size_t类型的最大值 |
| 该头文件还定义了一些别处定义的类型使用的常量 | |
扩展的整型常量
stdin.h头文件定义了一些宏用于各种扩展整数类型。从本质上看,这种宏是底层类型(即在特定实现中表示扩展类型的基本类型)的强制转换。
把类型名后面的_t替换成_C,然后大写所有的字母就构成了一个宏名。例如,使用表达式UNIT_LEAST64_C(1000)后,1000就是unit_least64_t类型的常量。