定宽整数类型 (C99 起) - cppreference.com
来自cppreference.com
类型
对于下列每个标记有 (可选) 的 typedef 名,当且仅当实现提供了对应的某个类型时,实现才会定义该 typedef 名。
在标头 | |
int8_tint16_tint32_tint64_tintN_t (可选)(可选)(可选)(可选)(可选) |
宽度正好是 N(典型情况有 8、16、32 和 64)位且无填充位的有符号整数类型 (typedef) [编辑] |
int_fast8_tint_fast16_tint_fast32_tint_fast64_tint_fastN_t (可选) |
宽度至少有 N(典型情况有 8、16、32 和 64)位的最快的有符号整数类型 (typedef) [编辑] |
int_least8_tint_least16_tint_least32_tint_least64_tint_leastN_t (可选) |
宽度至少有 N(典型情况有 8、16、32 和 64)位的最小的有符号整数类型 (如果有定义 intN_t,那么 int_leastN_t 表示相同的类型) (typedef) [编辑] |
intmax_t |
位精确整数类型以外的(C23 起)最大宽度的有符号整数类型 (typedef) [编辑] |
intptr_t (可选) |
位精确整数类型以外的(C23 起)足以保有指向 void 的指针的有符号整数类型 (typedef) [编辑] |
uint8_tuint16_tuint32_tuint64_tuintN_t (可选)(可选)(可选)(可选)(可选) |
宽度正好是 N(典型情况有 8、16、32 和 64)位且无填充位的无符号整数类型 (typedef) [编辑] |
uint_fast8_tuint_fast16_tuint_fast32_tuint_fast64_tuint_fastN_t (可选) |
宽度至少有 N(典型情况有 8、16、32 和 64)位的最快的无符号整数类型 (typedef) [编辑] |
uint_least8_tuint_least16_tuint_least32_tuint_least64_tuint_leastN_t (可选) |
宽度至少有 N(典型情况有 8、16、32 和 64)位的最小的无符号整数类型 (如果有定义 uintN_t,那么 uint_leastN_t 表示相同的类型) (typedef) [编辑] |
uintmax_t |
位精确整数类型以外的(C23 起)最大宽度的无符号整数类型 (typedef) [编辑] |
uintptr_t (可选) |
位精确整数类型以外的(C23 起)足以保有指向 void 的指针的无符号整数类型 (typedef) [编辑] |
宏常量
对于下列每个标记有 (有条件提供) 的宏,当且仅当实现定义了对应的 typedef 名时,实现才会定义该宏。
在标头 | |
有符号整数:位宽 | |
INTN_WIDTH (C23)(有条件提供) |
intN_t 的位宽(N 的典型情况有 8、16、32 和 64) (宏常量) [编辑] |
INT_FASTN_WIDTH (C23)(有条件提供) |
int_fastN_t 的位宽(N 的典型情况有 8、16、32 和 64) (宏常量) [编辑] |
INT_LEASTN_WIDTH (C23)(有条件提供) |
int_leastN_t 的位宽(N 的典型情况有 8、16、32 和 64) (宏常量) [编辑] |
INTMAX_WIDTH (C23) |
intmax_t 的位宽 (宏常量) [编辑] |
INTPTR_WIDTH (C23)(有条件提供) |
intptr_t 的位宽 (宏常量) [编辑] |
有符号整数:最小值 | |
INTN_MIN (有条件提供) |
intN_t 的最小值(N 的典型情况有 8、16、32 和 64) (宏常量) [编辑] |
INT_FASTN_MIN (有条件提供) |
int_fastN_t 的最小值(N 的典型情况有 8、16、32 和 64) (宏常量) [编辑] |
INT_LEASTN_MIN (有条件提供) |
int_leastN_t 的最小值(N 的典型情况有 8、16、32 和 64) (宏常量) [编辑] |
INTPTR_MIN (有条件提供) |
intptr_t 的最小值 (宏常量) [编辑] |
INTMAX_MIN |
intmax_t 的最小值 (宏常量) [编辑] |
有符号整数:最大值 | |
INTN_MAX (有条件提供) |
intN_t 的最大值(N 的典型情况有 8、16、32 和 64) (宏常量) [编辑] |
INT_FASTN_MAX (有条件提供) |
int_fastN_t 的最大值(N 的典型情况有 8、16、32 和 64) (宏常量) [编辑] |
INT_LEASTN_MAX (有条件提供) |
int_leastN_t 的最大值(N 的典型情况有 8、16、32 和 64) (宏常量) [编辑] |
INTPTR_MAX (有条件提供) |
intptr_t 的最大值 (宏常量) [编辑] |
INTMAX_MAX |
intmax_t 的最大值 (宏常量) [编辑] |
无符号整数:位宽 | |
UINTN_WIDTH (C23)(有条件提供) |
uintN_t 的位宽(N 的典型情况有 8、16、32 和 64) (宏常量) [编辑] |
UINT_FASTN_WIDTH (C23)(有条件提供) |
uint_fastN_t 的位宽(N 的典型情况有 8、16、32 和 64) (宏常量) [编辑] |
UINT_LEASTN_WIDTH (C23)(有条件提供) |
uint_leastN_t 的位宽(N 的典型情况有 8、16、32 和 64) (宏常量) [编辑] |
UINTMAX_WIDTH (C23) |
uintmax_t 的位宽 (宏常量) [编辑] |
UINTPTR_WIDTH (C23)(有条件提供) |
uintptr_t 的位宽 (宏常量) [编辑] |
无符号整数:最大值 | |
UINTN_MAX (有条件提供) |
uintN_t 的最大值(N 的典型情况有 8、16、32 和 64) (宏常量) [编辑] |
UINT_FASTN_MAX (有条件提供) |
uint_fastN_t 的最大值(N 的典型情况有 8、16、32 和 64) (宏常量) [编辑] |
UINT_LEASTN_MAX (有条件提供) |
uint_leastN_t 的最大值(N 的典型情况有 8、16、32 和 64) (宏常量) [编辑] |
UINTPTR_MAX (有条件提供) |
uintptr_t 的最大值 (宏常量) [编辑] |
UINTMAX_MAX |
uintmax_t 的最大值 (宏常量) [编辑] |
函数宏
对于下列每个标记有 (有条件提供) 的宏,当且仅当实现定义了对应的 typedef 名时,实现才会定义该宏。
展开成 int_leastN_t 类型的整数常量表达式,它的值由实参指定 (宏函数) [编辑] | |
展开成 intmax_t 类型的整数常量表达式,它的值由实参指定 (宏函数) [编辑] | |
展开成 uint_leastN_t 类型的整数常量表达式,它的值由实参指定 (宏函数) [编辑] | |
展开成 uintmax_t 类型的整数常量表达式,它的值由实参指定 (宏函数) [编辑] | |
#include <stdint.h> UINT64_C(0x123) // 可能展开成 0x123ULL 或 0x123UL
格式宏常量
fprintf 系列函数的格式常量
此处列出的每个 PRI 宏当且仅当实现定义对应的 typedef 名才得以定义。
int 或unsigned int的等价物 |
描述 | 数据类型的宏 | ||||
|---|---|---|---|---|---|---|
|
|
|
|
| ||
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的等价物 |
描述 | 数据类型的宏 | ||||
|---|---|---|---|---|---|---|
|
|
|
|
| ||
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 |
示例
#include <inttypes.h> #include <stdio.h> int main(void) { printf("%zu\n", sizeof(int64_t)); printf("%s\n", PRId64); printf("%+" PRId64 "\n", INT64_MIN); printf("%+" PRId64 "\n", INT64_MAX); int64_t n = 7; printf("%+" PRId64 "\n", n); }
可能的输出:
8 lld -9223372036854775808 +9223372036854775807 +7
引用
- C23 标准(ISO/IEC 9899:2024):
- 7.8.1 Macros for format specifiers (第 TBD 页)
- 7.18 Integer types <stdint.h> (第 TBD 页)
- 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 页)