Namespaces
Variants

Fixed width integer types (since C99)

From cppreference.net
< c ‎ | types

目录

类型

定义于头文件 <stdint.h>
int8_t
int16_t
int32_t
int64_t
宽度恰好为
8、16、32 和 64 位的有符号整数类型
无填充位且使用二进制补码表示负值
(仅当实现直接支持该类型时提供)
int_fast8_t
int_fast16_t
int_fast32_t
int_fast64_t
宽度至少为
8、16、32 和 64 位的最快有符号整数类型
int_least8_t
int_least16_t
int_least32_t
int_least64_t
宽度至少为
8、16、32 和 64 位的最小有符号整数类型
intmax_t 最大宽度整数类型
intptr_t 能够容纳指针的整数类型
uint8_t
uint16_t
uint32_t
uint64_t
宽度恰好为
8、16、32 和 64 位的无符号整数类型
(仅当实现直接支持该类型时提供)
uint_fast8_t
uint_fast16_t
uint_fast32_t
uint_fast64_t
宽度至少为
8、16、32 和 64 位的最快无符号整数类型
uint_least8_t
uint_least16_t
uint_least32_t
uint_least64_t
宽度至少为
8、16、32 和 64 位的最小无符号整数类型
uintmax_t 最大宽度无符号整数类型
uintptr_t 能够容纳指针的无符号整数类型

实现可以定义类型别名 int N _t int_fast N _t int_least N _t uint N _t uint_fast N _t uint_least N _t ,其中 N 不是 8、16、32 或 64。仅当实现支持具有无填充位的该宽度整数类型时,才能定义 int N _t 形式的类型别名。因此, uint24_t 表示宽度恰好为 24 位的无符号整数类型。

下列列出的每个宏,当且仅当实现定义了对应的类型定义名称时才会被定义。宏 INT N _C UINT N _C 分别对应于类型定义名称 int_least N _t uint_least N _t

宏常量

定义于头文件 <stdint.h>
有符号整数:位宽
INT8_WIDTH INT16_WIDTH INT32_WIDTH INT64_WIDTH
(C23) (可选)
int8_t int16_t int32_t int64_t 类型对象的位宽(精确为 8、16、32、64)
(宏常量)
INT_FAST8_WIDTH INT_FAST16_WIDTH INT_FAST32_WIDTH INT_FAST64_WIDTH
(C23)
int_fast8_t int_fast16_t int_fast32_t int_fast64_t 类型对象的位宽
(宏常量)
INT_LEAST8_WIDTH INT_LEAST16_WIDTH INT_LEAST32_WIDTH INT_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_MIN INT16_MIN INT32_MIN INT64_MIN
int8_t int16_t int32_t int64_t 类型对象的最小值
(宏常量)
INT_FAST8_MIN INT_FAST16_MIN INT_FAST32_MIN INT_FAST64_MIN
int_fast8_t int_fast16_t int_fast32_t int_fast64_t 类型对象的最小值
(宏常量)
INT_LEAST8_MIN INT_LEAST16_MIN INT_LEAST32_MIN INT_LEAST64_MIN
int_least8_t int_least16_t int_least32_t int_least64_t 类型对象的最小值
(宏常量)
INTPTR_MIN
intptr_t 类型对象的最小值
(宏常量)
INTMAX_MIN
intmax_t 类型对象的最小值
(宏常量)
有符号整数:最大值
INT8_MAX INT16_MAX INT32_MAX INT64_MAX
int8_t int16_t int32_t int64_t 类型对象的最大值
(宏常量)
INT_FAST8_MAX INT_FAST16_MAX INT_FAST32_MAX INT_FAST64_MAX
int_fast8_t int_fast16_t int_fast32_t int_fast64_t 类型对象的最大值
(宏常量)
INT_LEAST8_MAX INT_LEAST16_MAX INT_LEAST32_MAX INT_LEAST64_MAX
int_least8_t int_least16_t int_least32_t int_least64_t 类型对象的最大值
(宏常量)
INTPTR_MAX
intptr_t 类型对象的最大值
(宏常量)
INTMAX_MAX
intmax_t 类型对象的最大值
(宏常量)
无符号整数:位宽
UINT8_WIDTH UINT16_WIDTH UINT32_WIDTH UINT64_WIDTH
(C23) (可选)
uint8_t uint16_t uint32_t uint64_t 类型对象的位宽(精确为 8、16、32、64)
(宏常量)
UINT_FAST8_WIDTH UINT_FAST16_WIDTH UINT_FAST32_WIDTH UINT_FAST64_WIDTH
(C23)
uint_fast8_t uint_fast16_t uint_fast32_t uint_fast64_t 类型对象的位宽
(宏常量)
UINT_LEAST8_WIDTH UINT_LEAST16_WIDTH UINT_LEAST32_WIDTH UINT_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_MAX UINT16_MAX UINT32_MAX UINT64_MAX
uint8_t uint16_t uint32_t uint64_t 类型对象的最大值
(宏常量)
UINT_FAST8_MAX UINT_FAST16_MAX UINT_FAST32_MAX UINT_FAST64_MAX
uint_fast8_t uint_fast16_t uint_fast32_t uint_fast64_t 类型对象的最大值
(宏常量)
<div class="t-dsc

用于最小宽度整型常量的函数宏

INT8_C INT16_C INT32_C INT64_C
扩展为具有指定参数值且类型分别为 int_least8_t int_least16_t int_least32_t int_least64_t 的整型常量表达式
(函数宏)
INTMAX_C
扩展为具有指定参数值且类型为 intmax_t 的整型常量表达式
(函数宏)
UINT8_C UINT16_C UINT32_C UINT64_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 宏,当且仅当实现定义了对应的类型定义名称时才会被定义。

对应
int
unsigned int 的等效类型
描述 数据类型宏定义




[u]int x _t




[u]int_least x _t
[u]int_fast x _t
[u]intmax_t
[u]intptr_t
d 有符号十进制整数值输出 PRId x PRIdLEAST x PRIdFAST x PRIdMAX PRIdPTR
i PRIi x PRIiLEAST x PRIiFAST x PRIiMAX PRIiPTR
u 无符号十进制整数值输出 PRIu x PRIuLEAST x PRIuFAST x PRIuMAX PRIuPTR
o 无符号八进制整数值输出 PRIo x PRIoLEAST x PRIoFAST x PRIoMAX PRIoPTR
x 无符号小写十六进制整数值输出 PRIx x PRIxLEAST x PRIxFAST x PRIxMAX PRIxPTR
X 无符号大写十六进制整数值输出 PRIX x PRIXLEAST x PRIXFAST x PRIXMAX PRIXPTR

fscanf 系列函数的格式常量

此处列出的每个 SCN 宏当且仅当实现定义了对应的类型别名且具有适用于该类型的 fscanf 长度修饰符时才会被定义。

对应
int
unsigned int 的等效类型
描述 数据类型宏定义




[u]int x _t




[u]int_least x _t
[u]int_fast x _t
[u]intmax_t
[u]intptr_t
d 有符号十进制整数值输入 SCNd x SCNdLEAST x SCNdFAST x SCNdMAX SCNdPTR
i 有符号整数值输入(进制由解析的首字符决定) SCNi x SCNiLEAST x SCNiFAST x SCNiMAX SCNiPTR
u 无符号十进制整数值输入 SCNu x SCNuLEAST x SCNuFAST x SCNuMAX SCNuPTR
o 无符号八进制整数值输入 SCNo x SCNoLEAST x SCNoFAST x SCNoMAX SCNoPTR
x 无符号十六进制整数值输入 SCNx x SCNxLEAST x SCNxFAST x SCNxMAX SCNxPTR

示例

另请参阅关于此示例中使用的 格式宏 前空格的 C++兼容性说明

#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 格式说明符宏 (p: TBD)
  • 7.18 整数类型 <stdint.h> (p: TBD)
  • C17 标准 (ISO/IEC 9899:2018):
  • 7.8.1 格式说明符宏 (p: 158-159)
  • 7.18 整数类型 <stdint.h> (p: 212-216)
  • C11 标准 (ISO/IEC 9899:2011):
  • 7.8.1 格式说明符宏 (p: 217-218)
  • 7.18 整数类型 <stdint.h> (p: 289-295)
  • C99标准(ISO/IEC 9899:1999):
  • 7.8.1 格式说明符宏(页码:198-199)
  • 7.18 整型类型 <stdint.h>(页码:255-261)

参见

C++ 文档 关于 固定宽度整数类型
C++ 文档 关于 用户定义字面量( 格式化宏说明