C++ 类型

news2024/11/25 15:42:51

4.5//默认double类型

4.5f//float类型

基本内置类型

基本内置类型包含算术类型和空类型,算术类型包含字符、整数型、布尔值和浮点数,空类型不对应具体的值,仅用于一些特殊的场合。

算术类型

分为两类,整型(包括字符和布尔类型)和浮点型。

浮点数有效位数的最小值,然而大多数编译器都实现了更高的精度。float以1个字(32比特)来表示,double以2个字(64比特)来表示,long double以3或4个字(96或128比特)来表示。一般来说,类型float和double分别有7和16个有效位;类型long double则常常被用于有特殊浮点需求的硬件,它的具体实现不同,精度也各不相同。

带符号类型和无符号类型

除去布尔型和扩展的字符型之外,其他整型可以划分为带符号的和无符号的两种。带符号类型可以表示正数、负数或0。,无符号类型则仅能表示大于等于0的值。

类型int、short、long和long long都是带符号的,通过在这些类型名前添加unsigned就可以得到无符号类型。类型unsigned int可以缩写为unsigned。

字符型被分为了三种:char、signed char和unsigned char。类型char和类型signed char并不一样。字符的表现形式只有两种,带符号和无符号的。类型char只会变现为其中一种,具体由编译器据决定。

类型转换

  1. 非布尔类型的算术值赋给布尔类型时,0—>false,其他—>true
  2. 布尔值赋给非布尔类型时,false—>0,true—>1
  3. 浮点数赋给整数类型时,进行近似处理。结果值保留浮点数中小数点之前的部分。
  4. 整数值赋给浮点类型时,小数部分记为0。如果该整数所占的空间超过了浮点类型的容量,精确度可能由损失。
  5. 当赋给无符号数一个超过它的表示范围的值时,结果是初始值对无符号类型表示数值总数取模后的余数。【涉及数的存储】
  6. 当赋给带符号数一个超过它的表示范围的值时,结果是未定义的。

自动转换

窄—>宽

整型<浮点型

布尔<int

char<int

有符号<无符号

空间小<空间大

类型别名

是一个名字,是某种类型的同义词。类型别名和类型的名字等价,只要是类型的名字出现的地方,就能使用类型别名。

定义类型别名

typedef

typedef 类型 类型别名; 声明符可以包含类型修饰,由基本类型构造出复合类型。

特别声明

using 别名 = 类型;把等号左侧的名字规定成等号右侧类型的别名

指针、常量和类型别名

首先,遇到使用类型别名的声明语句时,不能把类型别名替换成其本来的样子【可通过添加小括号帮助理解】。其次,如果使用 const 修饰类型别名,它修饰的是一个整体,可以为其加一个小括号方便理解。

typedef char* pstring;

const pstring cstr = 0; //可理解为 const ( char * ) cstr = 0;

const 修饰 pstring 即 char * ,说明 cstr 是一个指针常量,其指向不能改变,但是指向的内容可以改变。

auto

auto 可以让编译器通过初始值推算变量的类型。

使用 auto 可以在一条语句中声明多个变量。因为一条语句只能有一个基本数据类型,所以该语句中所有变量的基本类型都一样。

常量

会忽略顶层的 const ,保留底层的 const 。

对常量对象取地址是一种底层 const 。

明确指出可使推断出的 auto 类型是一个顶层 const。

引用

使用引用是使用引用的对象【尤其是引用被用作初始值时】,真正参与初始化的是引用对象的值,此时编译器以引用对象的类型作为 auto 的类型。

可将引用的类型设为 auto 。

设置一个类型为 auto 的引用时,保留初始值中的顶层常量属性,若给初始值绑定一个引用,此时的常量将不再是顶层常量。

decltype

作用:选择并返回操作数的数据类型,在此过程中,编译器分析表达式并得到它的类型,却不实际计算表达式的值。

decltype 处理顶层 const 和引用的方式与 auto 不太相同。如果 decltype 使用的表达式是一个变量,则 decltype 返回该变量的类型(包括顶层 const 和引用)。

引用作为其所指对象的同义词出现,只有用在 decltype 处例外。

引用

decltype 使用的表达式不是一个变量时,decltype 返回表达式结果对应的类型。有些表达式向 decltype 返回一个引用类型,这种情况发生时,意味着该表达式的结果对象能作为一条赋值语句的左值。

//decltype 的结果可以是引用类型

int i = 42, *p = &i, &r = i;

decltype(r + 0) b; // 正确:加法的结果是 int ,因此 b 是一个未初始化的 int 类型的变量

decltype(*p) c; // 错误:c 是 int& ,必须初始化【*p 意为对p解引用,p 指针指向一个int类型的对象】

decltype 结果是引用类型的情况

引用

表达式的内容是引用时,decltype 的结果是引用类型。

因为 r 是一个引用,所以 decltype(r) 的结果是引用类型,若让结果类型是 r 所指的类型,可把 r 作为表达式的一部分,如 r + 0 ,该表达式的结果是一个具体值而非一个引用。

解引用

表达式的内容是解引用操作时,decltype 的结果是引用类型。解引用指针可以得到指针所指的对象,而且可以给该对象赋值。

decltype 和 auto 的区别

  • 处理顶层 const 和引用的方式与 auto 不同。

auto 忽略顶层的 const,保留底层的 const。使用引用使用的是引用的对象,编译器以引用对象的类型作为 auto 的类型,可显示的使用 & 来声明一个 auto 类型的引用。

decltype 使用的表达式是一个变量,则 decltype 返回该变量的类型(包括顶层 const 和引用)。表达式的内容是引用时返回引用类型。

  • decltype 的结果类型与表达式形式密切相关。

对于 decltype 所用的表达式,如果变量名加上一对括号,则得到的类型与不加括号时不同 。如果 decltype 使用的是一个不加括号的变量,得到的结果是该变量的类型;如果给变量加上一层或多层括号,得到的结果是该变量类型的引用。

decltype((variable))(注意是双层括号)的结果永远是引用,而decltype(variable)结果只有当 variable 本身就是一个引用时才是引用。

// decltype 的表达式如果是加上括号的变量,结果是引用

decltype((i)) d; //错误:d 是 int&,必须初始化

decltype(i) e; //正确:e 是一个(未初始化的)int

自定义数据结构

数据结构:把一组相关的数据元素组织起来然后使用其策略和方法。以类的形式自定义数据结构。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1161353.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

艾奇免费KTV电子相册视频制作软件

不得不承认功能特色支持添加导入图形、视频、歌曲、卡啦ok动态歌词字幕文件&#xff1a;图形文件格式支持导入jpg/jpeg/png/bmp/gif等静态图形&#xff1b;视频文件支持导入AVI/MP4/FLV/MTS/MPG/RMVB等几乎所有常见视频文件&#xff1b;歌曲格式支持mp3/wma/acc/ogg/wav等几乎所…

力扣第96题 不同的二叉搜索树 c++ 二叉搜索树 动态规划 + 数学思维

题目 96. 不同的二叉搜索树 中等 相关标签 树 二叉搜索树 数学 动态规划 二叉树 给你一个整数 n &#xff0c;求恰由 n 个节点组成且节点值从 1 到 n 互不相同的 二叉搜索树 有多少种&#xff1f;返回满足题意的二叉搜索树的种数。 示例 1&#xff1a; 输入&#…

NoSQL数据库使用场景以及架构介绍

文章目录 一. 什么是NoSQL&#xff1f;二. NoSQL分类三. NoSQL与关系数据库有什么区别四. NoSQL主要优势和缺点五. NoSQL体系框架 其它相关推荐&#xff1a; 系统架构之微服务架构 系统架构设计之微内核架构 鸿蒙操作系统架构 架构设计之大数据架构&#xff08;Lambda架构、Kap…

Halo勒索病毒:了解最新变种.halo,以及如何保护您的数据

导言&#xff1a; 在当今数字化的世界中&#xff0c;网络威胁不断演变&#xff0c;其中勒索病毒一直是网络犯罪分子的有力武器之一。在这篇文章中&#xff0c;我们将深入介绍.halo勒索病毒&#xff0c;了解它的工作方式&#xff0c;讨论如何恢复被加密的数据文件&#xff0c;并…

【网络协议】聊聊HTTPS协议

前面的文章&#xff0c;我们描述了网络是怎样进行传输数据包的&#xff0c;但是网络是不安全的&#xff0c;对于这种流量门户网站其实还好&#xff0c;对于支付类场景其实容易将数据泄漏&#xff0c;所以安全的方式是通过加密&#xff0c;加密方式主要是对称加密和非对称加密。…

vue3简单写导航anchor示例(支持点击高亮和滚动判断高亮)

1. 点击anchor, 相应的anchorlink高亮 function anchorClick(index) { forceStop.value true; time Date.now(); wheelRef.value.children[index].scrollIntoView({ block: start, behavior: smooth }); // 给一些延时, 再点亮anchor, 同时不再限制scrol…

【教3妹学编辑-算法题】环和杆

3妹&#xff1a;2哥&#xff0c;今年春节的放假安排出来了&#xff0c;今年春节放8天假&#xff0c;我们公司除夕提前放一天&#xff0c;总共9天假。 耶~~~ 2哥 :你们公司这么好啊&#xff0c; 我们公司的放假安排还没出来&#xff0c;不知道今年除夕能不能回家了… 3妹&#x…

(免费领源码)Java#MYSQL超市管理系统10428-计算机毕业设计项目选题推荐

目 录 摘要 1 绪论 1.1 研究意义 1.2国内外研究现状 1.3论文结构与章节安排 2 超市管理系统系统分析 2.1 可行性分析 2.2 系统流程分析 2.2.1 数据流程 3.3.2 业务流程 2.3 系统功能分析 2.3.1 功能性分析 2.3.2 非功能性分析 2.4 系统用例分析 2.5本章小结 3 …

openGauss-向量化执行引擎-VecUnique算子

openGauss-向量化执行引擎系列-VecUnique算子 openGauss实现了向量化执行引擎&#xff0c;达到算子级别的并行。也就是说在执行器火山模型基础上&#xff0c;一次处理一批数据&#xff0c;而不是一次一个元组。这样可以充分利用SIMD指令进行优化&#xff0c;达到指令级别并行。…

知识点滴 - 纸张的大小

关于纸张大小的描述方法 纸张大小的描述方法主要有两种&#xff0c;一种是我们经常使用的打印纸使用的A4、A3的叫法&#xff0c;这个是国际标准。 另一种是开本的叫法&#xff0c;比如16开、32开等。开本常见于书籍印刷品的规格。正规出版物基本没有使用 A4&#xff08;ISO国际…

1688阿里巴巴官方开放平台API接口获取跨境属性、跨境包裹重量、单位重量等参数调用示例说明

1688.item_get_specifications-获得跨境属性 公共参数 名称类型必须描述keyString是调用key&#xff08;必须以GET方式拼接在URL中&#xff09;注册调用key接入secretString是调用密钥api_nameString是API接口名称&#xff08;包括在请求地址中&#xff09;[item_search,item_…

2023SHCTF web方向wp

1.ezphp 看一眼&#xff0c;你大爷&#xff0c;啥玩意都给我过滤完了。 还好下面有preg_replace()/e&#xff0c;会把replacement当作php语句执行 传参pattern.*&#xff0c; .*表示任意字符&#xff0c;code{${phpinfo()}} &#xff0c;为什么这样写&#xff0c;因为,print_…

CHS零壹视频恢复程序高级版视频修复OCR使用方法

目前CHS零壹视频恢复程序监控版、专业版、高级版已经支持了OCR&#xff0c;OCR是一种光学识别系统&#xff0c;高级版最新版本中不仅仅是在视频恢复中支持OCR&#xff0c;同时视频修复模块也增加了OCR功能&#xff0c;此功能可以针对一些批量修复的视频文件&#xff08;如执法仪…

网络编程---Socket

文章目录 网络编程基础什么是网络编程&#xff1f;网络编程的基本概念 网络编程实现Socket套接字UDP网络通信流程&#xff08;回显服务器&#xff09;服务器&#xff1a;客户端完整代码示例&#xff1a; TCP网络通信流程&#xff08;回显服务器&#xff09;服务器客户端完整的代…

医保经办系统练兵比武竞赛中用到的软件和硬件

全国医保经办系统练兵比武竞赛包括必答题、抢答题、案例题、实操题、风险题&#xff0c;用到选手端平板、评委端平板、主持人平板、抢答器等设备。分别计算团队分和个人分。答题规则和计分方案均较为复杂&#xff0c;一般竞赛软件无法实现&#xff0c;要用到高端竞赛软件&#…

谷歌动态搜索广告被滥用引发恶意软件泛滥

研究人员发现了一种新方法&#xff0c;可以利用易受攻击的网站向搜索引擎用户发送恶意的、有针对性的广告&#xff0c;这种方法能够传播大量恶意软件&#xff0c;使受害者完全不知所措。 关键是“动态搜索广告”&#xff0c;谷歌利用网站登陆页面的内容将目标广告与搜索配对的…

Kubernetes 高级调度 - Affinity

Author&#xff1a;rab 目录 前言一、Node 亲和性1.1 NodeAffinity1.1.1 Hard Node Affinity1.1.2 Soft Node Affinity 1.2 NodeAntiAffinity 二、Pod 亲和性2.1 PodAffinity2.1.1 Hard Pod Affinity2.1.2 Soft Pod Affinity 2.2 PodAntiAffinity 总结 前言 Kubernetes 中的 A…

OceanBase:02-单机部署(生产环境)

目录 一、部署规划 二、配置要求 三、部署前配置 1.配置 limits.conf 2.配置 sysctl.conf 3.关闭防火墙 4.关闭 SELinux 5.创建数据目录&#xff0c;修改文件所有者信息 6.设置无密码 SSH 登录 7.安装jdk 四、解压执行安装 五、OBD命令行部署 1.修改配置文件(all-c…

网络质量探测

目录 一.BFD监测网络状态 二. NQA检测网络状态 一.BFD监测网络状态 BFD(BidrectionaL Forwarding Detection 双向转发检测)用于快速检测系统设备之间的发送和接受两个方向的通信故障&#xff0c;并在出现故障时通知生成应用。BFD 广泛用于链路故障检测&#xff0c;并能实现与…

探究Java虚拟机运行时数据区,了解方法区的奥秘

目录 一、栈、堆、方法区交互关系 二、方法区的理解 三、HotSpot中方法区的演进 四、设置方法区大小与OOM 五、如何解决OOM 六、方法区的内部结构 &#xff08;一&#xff09;类型变量 &#xff08;二&#xff09;域信息 &#xff08;三&#xff09;方法信息 &#x…