定宽整数类型 (C99 起)
来自cppreference.com
                    
                                        
                    
                    
                                                            
                    类型
| 在标头  <stdint.h>定义 | |
| int8_tint16_tint32_tint64_t (可选) | 分别是宽度正好是 8、16、32 和 64 位的有符号整数类型 无填充位并对负值使用补码 (在且只有在实现直接支持该类型时才会提供) (typedef) | 
| int_fast8_tint_fast16_tint_fast32_tint_fast64_t | 分别是宽度至少有 8、16、32 和 64 位的最快的有符号整数类型 (typedef) | 
| int_least8_tint_least16_tint_least32_tint_least64_t | 分别是宽度至少有 8、16、32 和 64 位的最小的有符号整数类型 (typedef) | 
| intmax_t | 最大宽度的有符号整数类型 (typedef) | 
| intptr_t (可选) | 足以保有指向 void 的指针的有符号整数类型 (typedef) | 
| uint8_tuint16_tuint32_tuint64_t (可选) | 分别是宽度正好是 8、16、32 和 64 位的无符号整数类型 (在且只有在实现直接支持该类型时才会提供) (typedef) | 
| uint_fast8_tuint_fast16_tuint_fast32_tuint_fast64_t | 分别是宽度至少有 8、16、32 和 64 位的最快的无符号整数类型 (typedef) | 
| uint_least8_tuint_least16_tuint_least32_tuint_least64_t | 分别是宽度至少有 8、16、32 和 64 位的最小的无符号整数类型 (typedef) | 
| uintmax_t | 最大宽度的无符号整数类型 (typedef) | 
| uintptr_t (可选) | 足以保有指向 void 的指针的无符号整数类型 (typedef) | 
实现可在 N 不是 8、 16、 32 或 64 时定义 typedef 名 intN_t、 int_fastN_t、 int_leastN_t、 uintN_t、 uint_fastN_t 及 uint_leastN_t 。形为 intN_t 的 typedef 名仅若实现支持有该宽度而无填充的整数类型才可以得以定义。从而 uint24_t 代表宽度准确地为 24 位的无符号整数类型。
下面列出的每个宏当且仅当实现定义对应的 typedef 名时才得以定义。宏 INTN_C 与 UINTN_C 分别对应 typedef 名 int_leastN_t 与 uint_leastN_t 。
宏常量
| 在标头  <stdint.h>定义 | |
| 有符号整数:宽度 | |
| INT8_WIDTHINT16_WIDTHINT32_WIDTHINT64_WIDTH (C23)(可选) | int8_t、int16_t、int32_t、int64_t 类型对象的位宽(准确地为 8、16、32、64) (宏常量) | 
| INT_FAST8_WIDTHINT_FAST16_WIDTHINT_FAST32_WIDTHINT_FAST64_WIDTH (C23) | int_fast8_t、int_fast16_t、int_fast32_t、int_fast64_t 类型对象的位宽 (宏常量) | 
| INT_LEAST8_WIDTHINT_LEAST16_WIDTHINT_LEAST32_WIDTHINT_LEAST64_WIDTH (C23) | int_least8_t、int_least16_t、int_least32_t、int_least64_t 类型对象的位宽 (宏常量) | 
| INTPTR_WIDTH (C23)(可选) | intptr_t 类型对象的位宽 (宏常量) | 
| INTMAX_WIDTH (C23) | intmax_t 类型对象的位宽 (宏常量) | 
| 有符号整数:最小值 | |
| INT8_MININT16_MININT32_MININT64_MIN (可选) | 分别是 std::int8_t、std::int16_t、std::int32_t和std::int64_t的最小值(宏常量) | 
| INT_FAST8_MININT_FAST16_MININT_FAST32_MININT_FAST64_MIN | 分别是 std::int_fast8_t、std::int_fast16_t、std::int_fast32_t和std::int_fast64_t的最小值(宏常量) | 
| INT_LEAST8_MININT_LEAST16_MININT_LEAST32_MININT_LEAST64_MIN | 分别是 std::int_least8_t、std::int_least16_t、std::int_least32_t和std::int_least64_t的最小值(宏常量) | 
| INTPTR_MIN (可选) | std::intptr_t的最小值(宏常量) | 
| INTMAX_MIN | std::intmax_t的最小值(宏常量) | 
| 有符号整数:最大值 | |
| INT8_MAXINT16_MAXINT32_MAXINT64_MAX (可选) | 分别是 std::int8_t、std::int16_t、std::int32_t和std::int64_t的最大值(宏常量) | 
| INT_FAST8_MAXINT_FAST16_MAXINT_FAST32_MAXINT_FAST64_MAX | 分别是 std::int_fast8_t、std::int_fast16_t、std::int_fast32_t和std::int_fast64_t的最大值(宏常量) | 
| INT_LEAST8_MAXINT_LEAST16_MAXINT_LEAST32_MAXINT_LEAST64_MAX | 分别是 std::int_least8_t、std::int_least16_t、std::int_least32_t和std::int_least64_t的最大值(宏常量) | 
| INTPTR_MAX (可选) | std::intptr_t的最大值(宏常量) | 
| INTMAX_MAX | std::intmax_t的最大值(宏常量) | 
| 无符号整数:宽度 | |
| UINT8_WIDTHUINT16_WIDTHUINT32_WIDTHUINT64_WIDTH (C23)(可选) | uint8_t、uint16_t、uint32_t、uint64_t 类型对象的位宽(准确地为 8、16、32、64) (宏常量) | 
| UINT_FAST8_WIDTHUINT_FAST16_WIDTHUINT_FAST32_WIDTHUINT_FAST64_WIDTH (C23) | uint_fast8_t、uint_fast16_t、uint_fast32_t、uint_fast64_t 类型对象的位宽 (宏常量) | 
| UINT_LEAST8_WIDTHUINT_LEAST16_WIDTHUINT_LEAST32_WIDTHUINT_LEAST64_WIDTH (C23) | uint_least8_t、uint_least16_t、uint_least32_t、uint_least64_t 类型对象的位宽 (宏常量) | 
| UINTPTR_WIDTH (C23)(可选) | uintptr_t 类型对象的位宽 (宏常量) | 
| UINTMAX_WIDTH (C23) | uintmax_t 类型对象的位宽 (宏常量) | 
| 无符号整数:最大值 | |
| UINT8_MAXUINT16_MAXUINT32_MAXUINT64_MAX (可选) | 分别是 std::uint8_t、std::uint16_t、std::uint32_t和std::uint64_t的最大值(宏常量) | 
| UINT_FAST8_MAXUINT_FAST16_MAXUINT_FAST32_MAXUINT_FAST64_MAX | 分别是 std::uint_fast8_t、std::uint_fast16_t、std::uint_fast32_t和std::uint_fast64_t的最大值(宏常量) | 
| UINT_LEAST8_MAXUINT_LEAST16_MAXUINT_LEAST32_MAXUINT_LEAST64_MAX | 分别是 std::uint_least8_t、std::uint_least16_t、std::uint_least32_t和std::uint_least64_t的最大值(宏常量) | 
| UINTPTR_MAX (可选) | std::uintptr_t的最大值(宏常量) | 
| UINTMAX_MAX | std::uintmax_t的最大值(宏常量) | 
最小宽度整数常量的函数宏
| 在标头  <stdint.h>定义 | |
| INT8_CINT16_CINT32_CINT64_C | 展开成拥有以其参数指定的值和类型分别为 int_least8_t 、 int_least16_t 、 int_least32_t 、 int_least64_t 的整数常量表达式 (宏函数) | 
| INTMAX_C | 展开成拥有以其参数指定的值和 intmax_t 类型的整数常量表达式 (宏函数) | 
| UINT8_CUINT16_CUINT32_CUINT64_C | 展开成拥有以其参数指定的值,类型分别为 uint_least8_t 、 uint_least16_t 、 uint_least32_t 、 uint_least64_t 的整数常量表达式 (宏函数) | 
| UINTMAX_C | 展开成拥有以其参数指定的值和 uintmax_t 类型的整数常量表达式 (宏函数) | 
#include <stdint.h> UINT64_C(0x123) // 可以展开成 0x123ULL 或 0x123UL
格式宏常量
| 在标头  <inttypes.h>定义 | 
fprintf 系列函数的格式常量
此处列出的每个 PRI 宏当且仅当实现定义对应的 typedef 名才得以定义。
| int 或 unsigned int 的等价者 | 描述 | 数据类型的宏 | ||||
|---|---|---|---|---|---|---|
| [u]intx_t | [u]int_leastx_t | [u]int_fastx_t | [u]intmax_t | [u]intptr_t | ||
| d | 有符号十进制整数值的输出 | PRIdx | PRIdLEASTx | PRIdFASTx | PRIdMAX | PRIdPTR | 
| i | PRIix | PRIiLEASTx | PRIiFASTx | PRIiMAX | PRIiPTR | |
| u | 无符号十进制整数值的输出 | PRIux | PRIuLEASTx | PRIuFASTx | PRIuMAX | PRIuPTR | 
| o | 无符号八进制整数值的输出 | PRIox | PRIoLEASTx | PRIoFASTx | PRIoMAX | PRIoPTR | 
| x | 无符号小写十六进制整数值的输出 | PRIxx | PRIxLEASTx | PRIxFASTx | PRIxMAX | PRIxPTR | 
| X | 无符号大写十六进制整数值的输出 | PRIXx | PRIXLEASTx | PRIXFASTx | PRIXMAX | PRIXPTR | 
fscanf 系列函数的格式常量
此处列出的每个 SCN 宏当且仅当实现定义对应的 typedef 名且拥有适合该类型的 fscanf 长度修饰符才得以定义。
| int 或 unsigned int 的等价者 | 描述 | 数据类型的宏 | ||||
|---|---|---|---|---|---|---|
| [u]intx_t | [u]int_leastx_t | [u]int_fastx_t | [u]intmax_t | [u]intptr_t | ||
| d | 有符号十进制整数值的输入 | SCNdx | SCNdLEASTx | SCNdFASTx | SCNdMAX | SCNdPTR | 
| i | 有符号整数值的输入(以首个剖析的字符确定基底) | SCNix | SCNiLEASTx | SCNiFASTx | SCNiMAX | SCNiPTR | 
| u | 无符号十进制整数值的输入 | SCNux | SCNuLEASTx | SCNuFASTx | SCNuMAX | SCNuPTR | 
| o | 无符号八进制整数值的输入 | SCNox | SCNoLEASTx | SCNoFASTx | SCNoMAX | SCNoPTR | 
| x | 无符号十六进制值类型的输入 | SCNxx | SCNxLEASTx | SCNxFASTx | SCNxMAX | SCNxPTR | 
示例
运行此代码
可能的输出:
8 lld -9223372036854775808 +9223372036854775807 +7
引用
- C17 标准(ISO/IEC 9899:2018):
- 7.8.1 Macros for format specifiers (第 158-159 页)
 
- 7.18 Integer types <stdint.h> (第 212-216 页)
 
- C11 标准(ISO/IEC 9899:2011):
- 7.8.1 Macros for format specifiers (第 217-218 页)
 
- 7.18 Integer types <stdint.h> (第 289-295 页)
 
- C99 标准(ISO/IEC 9899:1999):
- 7.8.1 Macros for format specifiers (第 198-199 页)
 
- 7.18 Integer types <stdint.h> (第 255-261 页)