定宽整数类型 (C++11 起)

来自cppreference.com
< cpp‎ | types
 
 
工具库
类型支持(基本类型、 RTTI 、类型特性)
动态内存管理
错误处理
程序工具
变参数函数
日期和时间
函数对象
(C++11)
关系运算符
optionalanyvariant (C++17)
pair 与 tuple
(C++11)
(C++17)
swap 、 forward 与 move
(C++14)
(C++11)
(C++11)
初等字符串转换
(C++17)
(C++17)
类型运算
(C++11)
(C++17)
 
类型支持
基本类型
基础类型
定宽整数类型 (C++11)
数值极限
C 数值极限接口
运行时类型信息
类型特性
类型类别
(C++11)
(C++11)
(C++11)
(C++11)
(C++11)
(C++11)
(C++11)
(C++11)
类型属性
(C++11)
(C++11)
(C++11)
(C++14)
(C++11)
(C++11)(C++17 中弃用)
(C++11)
类型特性常量
元函数
(C++17)
端序
(C++20)
受支持操作
关系与属性查询
(C++11)
(C++11)
(C++11)
(C++11)
类型修改
(C++11)
(C++11)
(C++11)
类型变换
(C++11)
(C++11)
(C++17)
(C++11)(C++17 中弃用)
(C++17)
 

目录

[编辑] 类型

定义于头文件 <cstdint>
int8_t
int16_t
int32_t
int64_t
(可选)
分别为宽度恰为 8 、 16 、 32 和 64 位的有符号整数类型
无填充位并对负值使用补码
(仅若实现支持该类型才提供)
(typedef) [编辑]
int_fast8_t
int_fast16_t
int_fast32_t
int_fast64_t
分别为宽度至少有 8 、 16 、 32 和 64 位的最快的有符号整数类型
(typedef) [编辑]
int_least8_t
int_least16_t
int_least32_t
int_least64_t
分别为宽度至少有 8 、 16 、 32 和 64 位的最小的有符号整数类型
(typedef) [编辑]
intmax_t
最大宽度的有符号整数类型
(typedef) [编辑]
intptr_t
(可选)
足以保有指针的整数类型
(typedef) [编辑]
uint8_t
uint16_t
uint32_t
uint64_t
(可选)
宽度恰为 8 、 16 、 32 和 64 位的无符号整数类型
(仅若实现支持该类型才提供)
(typedef) [编辑]
uint_fast8_t
uint_fast16_t
uint_fast32_t
uint_fast64_t
分别为宽度至少有 8 、 16 、 32 和 64 位的最快无符号整数类型
(typedef) [编辑]
uint_least8_t
uint_least16_t
uint_least32_t
uint_least64_t
分别为宽度至少有 8 、 16 、 32 和 64 位的最小无符号整数类型
(typedef) [编辑]
uintmax_t
最大宽度的无符号整数类型
(typedef) [编辑]
uintptr_t
(可选)
足以保有指针的无符号整数类型
(typedef) [编辑]

[编辑] 宏常量

定义于头文件 <cstdint>
有符号整数:最小值
INT8_MIN
INT16_MIN
INT32_MIN
INT64_MIN
int8_tint16_tint32_tint64_t 类型对象的最小值
(宏常量) [编辑]
INT_FAST8_MIN
INT_FAST16_MIN
INT_FAST32_MIN
INT_FAST64_MIN
int_fast8_tint_fast16_tint_fast32_tint_fast64_t 类型对象的最小值
(宏常量) [编辑]
INT_LEAST8_MIN
INT_LEAST16_MIN
INT_LEAST32_MIN
INT_LEAST64_MIN
int_least8_tint_least16_tint_least32_tint_least64_t 类型对象的最小值
(宏常量) [编辑]
INTPTR_MIN
intptr_t 类型对象的最小值
(宏常量) [编辑]
INTMAX_MIN
intmax_t 类型对象的最小值
(宏常量) [编辑]
有符号整数:最大值
INT8_MAX
INT16_MAX
INT32_MAX
INT64_MAX
int8_tint16_tint32_tint64_t 类型对象的最大值
(宏常量) [编辑]
INT_FAST8_MAX
INT_FAST16_MAX
INT_FAST32_MAX
INT_FAST64_MAX
int_fast8_tint_fast16_tint_fast32_tint_fast64_t 类型对象的最大值
(宏常量) [编辑]
INT_LEAST8_MAX
INT_LEAST16_MAX
INT_LEAST32_MAX
INT_LEAST64_MAX
int_least8_tint_least16_tint_least32_tint_least64_t 类型对象的最大值
(宏常量) [编辑]
INTPTR_MAX
intptr_t 类型对象的最大值
(宏常量) [编辑]
INTMAX_MAX
intmax_t 类型对象的最大值
(宏常量) [编辑]
无符号整数:最大值
UINT8_MAX
UINT16_MAX
UINT32_MAX
UINT64_MAX
uint8_tuint16_tuint32_tuint64_t 类型对象的最大值
(宏常量) [编辑]
UINT_FAST8_MAX
UINT_FAST16_MAX
UINT_FAST32_MAX
UINT_FAST64_MAX
uint_fast8_tuint_fast16_tuint_fast32_tuint_fast64_t 类型对象的最大值
(宏常量) [编辑]
UINT_LEAST8_MAX
UINT_LEAST16_MAX
UINT_LEAST32_MAX
UINT_LEAST64_MAX
uint_least8_tuint_least16_tuint_least32_tuint_least64_t 类型对象的最大值
(宏常量) [编辑]
UINTPTR_MAX
uintptr_t 类型对象的最大值
(宏常量) [编辑]
UINTMAX_MAX
uintmax_t 类型对象的最大值
(宏常量) [编辑]

[编辑] 最小宽度整数常量的函数宏

INT8_C
INT16_C
INT32_C
INT64_C
展开成拥有以其参数指定的值和类型分别为 int_least8_tint_least16_tint_least32_tint_least64_t 的整数常量表达式
(宏函数) [编辑]
INTMAX_C
展开成拥有以其参数指定的值和 intmax_t 类型的整数常量表达式
(宏函数) [编辑]
UINT8_C
UINT16_C
UINT32_C
UINT64_C
展开成拥有以其参数指定的值,类型分别为 uint_least8_tuint_least16_tuint_least32_tuint_least64_t 的整数常量表达式
(宏函数) [编辑]
UINTMAX_C
展开成拥有以其参数指定的值和 uintmax_t 类型的整数常量表达式
(宏函数) [编辑]
#include <cstdint>
UINT64_C(0x123) // 展开成类型为 uint64_t 而值为 0x123 的字面量

[编辑] 格式化宏常量

定义于头文件 <cinttypes>

[编辑] std::fprintf 系列函数的格式化宏常量

int
unsigned int
的等价者
描述 数据类型的宏




std::intx_t




std::int_leastx_t
std::int_fastx_t
std::intmax_t
std::intptr_t
x = 8 、 16 、 32 或 64
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

[编辑] std::fscanf 系列函数的格式化宏常量

int
unsigned int
的等价者
描述 数据类型的宏




std::intx_t




std::int_leastx_t
std::int_fastx_t
std::intmax_t
std::intptr_t
x = 8 、 16 、 32 或 64
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++ 转译立即后随字符串字面量的字符为用户定义字面量,诸如 printf("%"PRId64"\n",n); 的 C 代码在 C++ 中非法,并在 PRId64 前要求空格。

C99 标准建议 C++ 实现不应定义上述极限、常量或格式化宏,除非在包含相对的 C 头文件( stdint.hinttypes.h )前(分别)定义宏 __STDC_LIMIT_MACROS__STDC_CONSTANT_MACROS__STDC_FORMAT_MACROS 。此建议未被采纳,并在 C11 中被移除。然而,某些实现(例如 glibc 2.17 )尝试应用此规则,而可能需要定义 __STDC 宏; C++ 编译器可以通过在某些环境自动定义它们来做变通。

[编辑] 示例

#include <cstdio>
#include <cinttypes>
 
int main()
{
    std::printf("%zu\n", sizeof(std::int64_t));
    std::printf("%s\n", PRId64);
    std::printf("%+" PRId64 "\n", INT64_MIN);
    std::printf("%+" PRId64 "\n", INT64_MAX);
 
    std::int64_t n = 7;
    std::printf("%+" PRId64 "\n", n);
}

可能的输出:

8
lld
-9223372036854775808
+9223372036854775807
+7

[编辑] 参阅

定宽整数类型C 文档