提高代码可移植性和可靠性的数据类型头文件
cstdint
自 C++11 开始被引入,旨在为 C++ 程序员提供一种可移植的方式来定义固定宽度的整数类型和相关常量,解决平台兼容性问题
以uint64_t
为例,说明该头文件的作用
uint64_t
是unsigned long long
的类型别名,
typedef unsigned long long uint64_t;
在一些编译器和平台上,unsigned long long
可能会被实现为比 64 位更宽的整数类型,例如 128 位整数
而 uint64_t
则是一个精确的 64 位无符号整数类型,它的大小是 64 位,在所有平台上都是一样的
通过编译器实现这一特性,可以确保代码在不同的平台和编译器上都能够正确地编译和运行,而无需手动调整数据类型的大小或名称。关于如何规定数据类型的长度,见C++11以前如何规定不同平台中数据类型的长度
以下是包含的主要类型别名
-
int8_t
: 有符号8位整数类型 -
uint8_t
: 无符号8位整数类型 -
int16_t
:有符号16位整数类型 -
uint16_t
:无符号16位整数类型 -
int32_t
:有符号32位整数类型 -
uint32_t
:无符号32位整数类型 -
int64_t
:有符号64位整数类型 -
C
:无符号64位整数类型 -
int_least8_t
、uint_least8_t
:至少有8位的有符号、无符号整数类型 -
int_least16_t
、uint_least16_t
:至少有16位的有符号、无符号整数类型 -
int_least32_t
、uint_least32_t
:至少有32位的有符号、无符号整数类型 -
int_least64_t
、uint_least64_t
:至少有64位的有符号、无符号整数类型 -
int_fast8_t
、uint_fast8_t
:最快的有符号、无符号整数类型,大小至少为8位 -
int_fast16_t
、uint_fast16_t
:最快的有符号、无符号整数类型,大小至少为16位 -
int_fast32_t
、uint_fast32_t
:最快的有符号、无符号整数类型,大小至少为32位 -
int_fast64_t
、uint_fast64_t
:最快的有符号、无符号整数类型,大小至少为64位 -
intmax_t
、uintmax_t
:最大的有符号、无符号整数类型
cfloat
自 C++11 开始被引入,旨在为 C++ 程序员提供一种可移植的方式来用于定义浮点数类型的常量和限制,解决平台兼容性问题
该头文件常见内容包括:
FLT_RADIX
:代表浮点数的基数,通常为 2FLT_MANT_DIG
:代表 float 类型的尾数位数,即精度DBL_MANT_DIG
:代表 double 类型的尾数位数,即精度LDBL_MANT_DIG
:代表 long double 类型的尾数位数,即精度FLT_DIG
:代表 float 类型的有效数字位数DBL_DIG
:代表 double 类型的有效数字位数LDBL_DIG
:代表 long double 类型的有效数字位数FLT_MAX_10_EXP
:代表 float 类型的指数的最大值(以 10 为底)DBL_MAX_10_EXP
:代表 double 类型的指数的最大值(以 10 为底)LDBL_MAX_10_EXP
:代表 long double 类型的指数的最大值(以 10 为底)FLT_MAX
:代表 float 类型的最大值DBL_MAX
:代表 double 类型的最大值LDBL_MAX
:代表 long double 类型的最大值FLT_MIN
:代表 float 类型的最小值DBL_MIN
:代表 double 类型的最小值LDBL_MIN
:代表 long double 类型的最小值FLT_EPSILON
:代表 float 类型的最小可表示值DBL_EPSILON
:代表 double 类型的最小可表示值LDBL_EPSILON
:代表 long double 类型的最小可表示值