提高代码可移植性和可靠性的数据类型头文件

cstdint

自 C++11 开始被引入,旨在为 C++ 程序员提供一种可移植的方式来定义固定宽度的整数类型和相关常量,解决平台兼容性问题

uint64_t为例,说明该头文件的作用
uint64_tunsigned 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_tuint_least8_t:至少有8位的有符号、无符号整数类型

  • int_least16_tuint_least16_t:至少有16位的有符号、无符号整数类型

  • int_least32_tuint_least32_t:至少有32位的有符号、无符号整数类型

  • int_least64_tuint_least64_t:至少有64位的有符号、无符号整数类型

  • int_fast8_tuint_fast8_t:最快的有符号、无符号整数类型,大小至少为8位

  • int_fast16_tuint_fast16_t:最快的有符号、无符号整数类型,大小至少为16位

  • int_fast32_tuint_fast32_t:最快的有符号、无符号整数类型,大小至少为32位

  • int_fast64_tuint_fast64_t:最快的有符号、无符号整数类型,大小至少为64位

  • intmax_tuintmax_t:最大的有符号、无符号整数类型

cfloat

自 C++11 开始被引入,旨在为 C++ 程序员提供一种可移植的方式来用于定义浮点数类型的常量和限制,解决平台兼容性问题

该头文件常见内容包括:

  • FLT_RADIX:代表浮点数的基数,通常为 2
  • FLT_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 类型的最小可表示值
posted @ 2023-06-05 19:03  0x7F  阅读(147)  评论(0编辑  收藏  举报