首页 > 其他分享 >提高代码可移植性和可靠性的数据类型头文件

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

时间:2023-06-05 19:25:23浏览次数:61  
标签:long 头文件 符号 int double 数据类型 整数 可移植性 类型

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 类型的最小可表示值

标签:long,头文件,符号,int,double,数据类型,整数,可移植性,类型
From: https://www.cnblogs.com/hongyugao/p/17458736.html

相关文章

  • GaussDB数据类型介绍
    GaussDB数据库GaussDB是华为基于openGauss自研生态推出的云化企业级分布式关系型数据库,它支持多种数据类型,包括数值、字符、日期等。在使用GaussDB时,可能需要进行数据类型转换,以满足不同的需求。本文将以示例的形式罗列并介绍一些常见的数据类型转换方法等。     数据类型......
  • 1.2 Java基础 数据类型(Integer源码解析)
    Java数据类型和Integer源码解析1.2.1基本数据类型1.2.2什么是拆装箱1.2.3拆装箱是如何实现的1.2.4Integer继承关系1.2.5Integer源码解析1.2.1基本数据类型       如大家所知,Java是一门面向对象的语言,但是java并非完全面向对象,Java中的数据类型分为了       ......
  • 数据类型
       ......
  • Linux 下串口驱动头文件之tty.h
    linux-2.6.29/include/linux#ifndef_LINUX_TTY_H#define_LINUX_TTY_H/**'tty.h'definessomestructuresusedbytty_io.candsomedefines.*/#ifdef__KERNEL__#include<linux/fs.h>#include<linux/major.h>#include<linux/termi......
  • Linux 下串口驱动头文件之termios.h
    在linux-2.6.29/include/asm-generic下的termios.h/*termios.h:generictermios/termiousercopying/translation*/#ifndef_ASM_GENERIC_TERMIOS_H#define_ASM_GENERIC_TERMIOS_H#include<asm/uaccess.h>#ifndef__ARCH_TERMIO_GETPUT/**Translatea"t......
  • FreeMarker介绍及基本数据类型和用法
    FreeMarker介绍及基本数据类型和用法FreeMarker中文官方参考手册FreeMarker英文官方参考手册一、FreeMarker介绍FreeMarker是一款模板引擎:即一种基于模板和要改变的数据,并用来生成输出文本(HTML网页,电子邮件,配置文件,源代码等)的通用工具。它不是面向最终用户的,而是一......
  • 【python基础】复杂数据类型-列表类型(元组)
    1.初识元组列表非常适合用于存储在程序运行期间可能变化的数据集。列表是可以修改的。然而,有时候需要创建一系列不可修改的元素,元组可以满足这种需求python将不能修改的值称为不可变的,而不可变的列表被称为元组。元组看起来犹如列表,但使用圆括号而不是方括号来标识。其语法格......
  • 【python基础】复杂数据类型-列表类型
    复杂数据类型-列表类型-学习目录列表-增删改查列表-排序/长度/遍历列表-数值列表列表-列表切片列表-元组......
  • Redis(三) -- 其他数据类型和数据持久化
    其他数据类型ListLPUSHLPUSHkeyvalue[value...]--将一个或多个值value插入到列表key的表头--如果有多个value值,那么各个value值按从左到右的顺序依次插入到表头:比如说,对空列表mylist执行命令LPUSHmylistabc,列表的值将是cba,这等同于原子性地执行L......
  • 高级数据类型
    Bitmapsredis应用于信息状态统计Bitmaps类型的基础操作获取指定key对应偏移量上的bit值getbitkeyoffset设置指定key对应偏移量上的bit值,value只能是1或0setbitkeyoffsetvalueBitmaps类型的扩展操作对指定key按位进行交、并、非、异或操作,并将结果保存到destKe......