◐ Shell
clean mode source ↗

定宽整数类型 (C99 起) - cppreference.com

来自cppreference.com

类型

对于下列每个标记有 (可选) 的 typedef 名,当且仅当实现提供了对应的某个类型时,实现才会定义该 typedef 名。

在标头 <stdint.h> 定义

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 名时,实现才会定义该宏。

在标头 <stdint.h> 定义

有符号整数:位宽

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
的等价物
描述 数据类型的宏

[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

示例

有关本示例中使用的格式宏,另请参见 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 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 页)

参阅