《C++ Primer Plus》《3、数据处理》
文章目录
- 0 前言
- 1 简单变量
- 1.1变量名
- 1.2整型
- 1.3整型short,int,long和long long
- 1.4无符号类型
- 1.5选择整型类型
- 1.6整型字面值
- 1.7C++如何确定常量的类型
- 1.8char类型:字符和小整数
- 1.9bool类型
- 2 cost限定符
- 3浮点数
- 3.1书写浮点数
- 3.2浮点类型
- 3.3浮点常量
- 3.4浮点数的优缺点
- 4 C++算数运算符
- 4.1运算符优先级和结合性
- 4.2除法分支
- 4.3求模运算符
- 4.4类型转换
- 4.5 auto声明
- 5 总结
- 6 参考
0 前言
本章依然介绍C++的基础用法,C++的变量类型有2中:基本类型和复合类型,本章主要介绍基本类型, 整数和浮点数。
1 简单变量
在实际生活中,我们通常要记录一个数据,比如今天的温度,饭菜的价格,比如今天室外温度23℃,变量是温度,数值是23,计算机记录多了一个操作,他要标记温度是何种类型的数值。所以对于计算机而言,关键的三个属性:信息存储在哪里,要存储声明数值,存储何种类型的信息。
1.1变量名
变量的命名原则是见文知意,看到这个变量的名称,大概就会知道这个变量是表示什么样的数值。C++命名需要遵循以下规则:
- 1)变量名称只能使用字母,数字,和下划线_;
- 2)变量的第一个字符不能是数字;
- 3)区分大小写;
- 4)不能用C++关键字作为变量名;
- 5)C++对于名称的长度没有限制,但有些平台有长度限制;
- 6)以一个下划线打头的名称,用作全局标识符。
1.2整型
整数就是没有小数部分的数字,C++基本整型,按宽度递增为char,short,int,long和C++11新增的long,
1.3整型short,int,long和long long
对于这些数据类型在不同的平台所展现的数据位数可能不一样,但约定了最小长度;
- 1)short至少16位;
- 2)int至少与short一样长;
- 3)long至少32位,且至少与int一样长;
- 4)long long 至少64位,且至少与long一样长。
1.4无符号类型
对于非负的数字,用无符号整型可以有效地扩大表示范围,例如short表示的范围是-32768——32767,而unsigned short的表示范围是0——65535,注意:只有当数字不会变负时,才可以使用无符号类型的变量。
整型溢出:

1.5选择整型类型
int被设置为计算机最“自然“的长度,对于大量的数据类型操作,int处理的会最快。当然遇到一些大型整数数组时,可以考虑使用short,这样会大大缩减存储空间。
1.6整型字面值
首位是1-9,10进制
首位是0,8进制
首位是0X,0x,16进制
1.7C++如何确定常量的类型
一个普通的数字默认为int类型;首先看后缀,若是有特定的后缀,则遵从后缀的格式;否则看数据的长度,如果数据的长度超过int类型,则自动转为long类型。
1.8char类型:字符和小整数
char类型是专门为存储字符而设计的对应的是ASCII表。但是有些像中文系统等需要用到wchar_t,这是一种较大的扩展字符集,它拥有足够的空间可以表示系统使用的最大扩展字符集。
1.9bool类型
bool类型有两种:true,false,通常情况下默认1是true,0是false,实际上任何非零值,都可以表示位true。
2 cost限定符
用const限定符来表示常量,常量被初始化后,其数值就被固定了,编译器将不允许再修改该常量的数值。
创建常量名的通用格式如下:
const type name = value,应该在声明中就对变量进行初始化。
3浮点数
浮点类型是基本类型的第二大类型,浮点数能够表示带小数部分的数字。
3.1书写浮点数
有2种方法,一种是常用的标准小数点表示方法;
第二种叫作E表示方法(E表示法适合非常大或者非常小的数字)
3.2浮点类型
浮点类型有3种:float,double,long double类型,根据实际要求进行选取。
3.3浮点常量
如果希望存储为float类型,用f或者F后缀;希望为long类型,用l或者L后缀。
3.4浮点数的优缺点
优点:表示整数之间的数值;因为有缩放因子,所以可以表示的范围大得多。
缺点:运算速度比整数慢,精确度降低
4 C++算数运算符
C++中的算术运算符与C一样,主要是+,-,*,/和%(求模运算符),这些基本都在小学中有学过,下面进行具体的介绍。
4.1运算符优先级和结合性
一般情况下,为了确保不出错,都会用括号将表达式括起来,在特殊情况下可能表达式会比较复杂,*,/,%的运算优先级相同,+,-的运算优先级相同,前者的优先级高于后者。
4.2除法分支
除法运算上有一些特殊的规定。2个除数都是整数,则运算结果也是整数,会丢弃一些小数部分。但是除数与被除数只要一方是浮点型,则最终的结果便是浮点型。(在C++中,浮点型数据不做特殊说明就是double类型的数据)。
4.3求模运算符
求模运算符,是整数除法剩余的余数,这是他的运算概念,当然他的运用场景仅限于整数。

4.4类型转换
1)初始化和赋值进行的转化
初始化和赋值进行的转换,以short和long为例。将short的值赋值给long,通常会将short类型的变量进行拓展,而不会改变这个变量的大小。但是将long类型的数值赋值给short类型的变量,short类型的变量可能会丢失数据,会带来潜在的风险。

2)以{}方式初始化进行的转化
{}使用大括号的初始化称为列表初始化,这种初始化用于给复杂的数据类型提供数值列表,他对类型转换的要求更为严格,我的理解,这种转化不允许数据丢失。
3)表达式中的转化
当同一个表达式中出现两种不同的算术类型时,C++会执行两种不同的转换;首先,一些类型在出现时便会自动转化,其次有些类型在于其他类型同时出现时在表达式中会被转换掉。
a.自动转化
在C++中,会将bool,char,unsigned char,signed char和short值转化为int(计算机使用这种类型运算会最快)。
b.不同类型变量放在一起后的转化
例如int与double两种类型相加时,相加后的结果会自动转换成较大的数据类型(double)。
4)传递参数的转化
为了保持与传统C语言代码的兼容性,例如会将float参数提升为double。
5)强制类型转化
在C中就学过强制类型抓换,在C++中有三种转换方式,举一个例子,声明一个int型的变量x
a.(long) x //C方式的强制类型转换
b.long (x) //C++方式的强制类型转换
c.static_cast<long>(x);//C++方式的强制类型转换
运算符 static_cast<typename>(value) //convert value to typename type;
4.5 auto声明
在初始化声明中,使用关键词auto,而不指定变量的类型,编译器便将变量的类型设置与初始值相同。
auto n = 100; // n is int
auto x = 1.5; //x is double
auto y = 1.3e12L; //y is long double
5 总结
C++的基本类型大致分为两种:整型、浮点型。整型有bool,char,signed char,unsigned char,short,unsigned short,int,unsigned int,long,unsigned long以及新增的long long和unsigned long long。浮点型有float,double,long double。也介绍了运算符以及运算符的优先级,以及不同数据类型直接的转换,为下面讲复合类型打下了基础。
6 参考
《C++ Primer Plus》
相关文章:
《C++ Primer Plus》《3、数据处理》
文章目录 0 前言1 简单变量1.1变量名1.2整型1.3整型short,int,long和long long1.4无符号类型1.5选择整型类型1.6整型字面值1.7C如何确定常量的类型1.8char类型:字符和小整数1.9bool类型 2 cost限定符3浮点数3.1书写浮点数3.2浮点类型3.3浮点常量3.4浮点数的优缺点 4…...
Java 正则匹配sql
文章目录 正则匹配sql表名称insert intoupdate 正则表达式什么时候要加^$ 在线正则校验 正则匹配sql表名称 insert into insert into PING_TABLE (CODE, NAME) VALUES(0, 待提交),(1, 审核中),(2, 审核通过),(3, 已驳回); regex -> insert\sinto\s(\w)\s*\(?update upda…...
服务器入门
入门服务器管理涉及到一系列基础概念和技能,这包括操作系统、网络配置、安全性、远程访问等。以下是一些建议,可以帮助你开始学习服务器管理: ### 1. **选择合适的操作系统:** - 大多数服务器使用 Linux 操作系统,…...
云端录制直播流视频,上传云盘
前言 哪一天我心血来潮,想把我儿子学校的摄像头视频流录制下来,并保存到云盘上,这样我就可以在有空的时候看看我儿子在学校干嘛。想到么就干,当时花了一些时间开发了一个后端服务,通过数据库配置录制参数,…...
【靶场实战】Pikachu靶场XSS跨站脚本关卡详解
Nx01 系统介绍 Pikachu是一个带有漏洞的Web应用系统,在这里包含了常见的web安全漏洞。 如果你是一个Web渗透测试学习人员且正发愁没有合适的靶场进行练习,那么Pikachu可能正合你意。 Nx02 XSS跨站脚本概述 Cross-Site Scripting 简称为“CSS”ÿ…...
蓝桥杯每日一题-----数位dp
前言 今天浅谈一下数位dp的板子,我最初接触到数位dp的时候,感觉数位dp老难了,一直不敢写,最近重新看了一些数位dp,发现没有想象中那么难,把板子搞会了,变通也会变的灵活的多! 引入…...
sklearn 计算 tfidf 得到每个词分数
from sklearn.feature_extraction.text import TfidfVectorizer# 语料库 可以换为其它同样形式的单词 corpus [list(range(-5, 5)),list(range(-6,4)),list(range(12)),list(range(13))]# corpus [ # [Two, wrongs, don\t, make, a, right, .], # [The, pen, is, might…...
Qt拖拽事件,实现控件内项的相互拖拽
文章目录 1拖拽演示2 步骤3 实现 这里主要以QTableview控件为例,实现表格内数据的相互拖拽。 1拖拽演示 2 步骤 自定以QTableView类,在自定义类中重写拖拽事件: void dropEvent(QDropEvent *event); void dragEnterEvent(QDragEnterEvent *…...
基于MATLAB实现的OFDM仿真调制解调,BPSK、QPSK、4QAM、16QAM、32QAM,加性高斯白噪声信道、TDL瑞利衰落信道
基于MATLAB实现的OFDM仿真调制解调,BPSK、QPSK、4QAM、16QAM、32QAM,加性高斯白噪声信道、TDL瑞利衰落信道 相关链接 OFDM中的帧(frame)、符号(symbol)、子载波(subcarriers)、导频…...
Redis核心技术与实战【学习笔记】 - 21.Redis实现分布式锁
概述 在《20.Redis原子操作》我们提到了应对并发问题时,除了原子操作,还可以通过加锁的方式,来控制并发写操作对共享数据的修改,从而保证数据的正确性。 但是,Redis 属于分布式系统,当有多个客户端需要争…...
17.Golang channel的基本定义及使用
目录 概述实践无缓冲 channel代码结果 缓冲 channel代码结果 channel的关闭特点代码结果range代码结果 select channel代码结果 结束 概述 此篇文章介绍 channel 的用法 无缓冲 channel缓冲 channelchannel的关闭特点range channelselect channel 每一种,配上完整…...
Linux - iptables 防火墙
一. 安全技术和防火墙 1.安全技术 入侵检测系统(Intrusion Detection Systems):特点是不阻断任何网络访问,量化、定位来自内外网络的威胁情况,主要以提供报警和事后监督为主,提供有针对性的指导措施和安全…...
如何在FBX剔除Lit.shader依赖
1)如何在FBX剔除Lit.shader依赖 2)Unity出AAB包(PlayAssetDelivery)模式下加载资源过慢问题 3)如何在URP中正确打出Shader变体 4)XLua打包Lua文件粒度问题 这是第371篇UWA技术知识分享的推送,精…...
cesium-测量高度垂直距离
cesium做垂直测量 完整代码 <template><div id"cesiumContainer" style"height: 100vh;"></div><div id"toolbar" style"position: fixed;top:20px;left:220px;"><el-breadcrumb><el-breadcrumb-i…...
Adobe Illustrator CEP插件开发入门指南
引言 Adobe Creative Cloud(创意云)中的Illustrator作为一款全球领先的矢量图形设计软件,为设计师提供了丰富的功能和无限的创作可能性。为了进一步增强其功能并满足个性化工作流程需求,Adobe引入了Common Extensibility Platform…...
【Spring】自定义注解 + AOP 记录用户的使用日志
目录 编辑 自定义注解 AOP 记录用户的使用日志 使用背景 落地实践 一:自定义注解 二:切面配置 三:Api层使用 使用效果 自定义注解 AOP 记录用户的使用日志 使用背景 (1)在学校项目中,安防平台…...
linux互斥锁:递归锁,非递归锁用法详解
在实际的项目中经常涉及到共享资源,共享资源被多个线程访问会出现竞争现象;为了解决竞争和保护共享资源常用的机制之一就是互斥锁! 互斥锁又分为递归锁和非递归锁,互斥锁默认是非递归锁,也是我们常用的上锁方式。那么什么是递归锁和非递归锁呢? 非递归锁(Non-recursive …...
MacOS安装dmg提示已文件已损坏的解决方法
MacOS安装dmg提示已文件已损坏的解决方法 导致原因是应用没有上传到苹果的appstroe,系统限制了安装,破碎提示是苹果的误导小手段 方法 一 App 在macOS Catalina(比较新的系统,例如m1,m2也适用)下提示已损坏…...
前端输入框简单实现检测@成员输入
大体逻辑是 给input框添加一个input监听,并判断输入是否为获取当前光标的位置,你输入的肯定在光标之前,且肯定是最后一个input输入的内容换行可以被认为空格,需要进行全局替换判断成功的逻辑分为两部分,前方一般来说是…...
通过与chatGPT交流实现零样本事件抽取
1、写作动机: 近来的大规模语言模型(例如Chat GPT)在零样本设置下取得了很好的表现,这启发作者探索基于提示的方法来解决零样本IE任务。 2、主要贡献: 提出了基于chatgpt的多阶段的信息抽取方法:在第一阶…...
AI-调查研究-01-正念冥想有用吗?对健康的影响及科学指南
点一下关注吧!!!非常感谢!!持续更新!!! 🚀 AI篇持续更新中!(长期更新) 目前2025年06月05日更新到: AI炼丹日志-28 - Aud…...
stm32G473的flash模式是单bank还是双bank?
今天突然有人stm32G473的flash模式是单bank还是双bank?由于时间太久,我真忘记了。搜搜发现,还真有人和我一样。见下面的链接:https://shequ.stmicroelectronics.cn/forum.php?modviewthread&tid644563 根据STM32G4系列参考手…...
微信小程序之bind和catch
这两个呢,都是绑定事件用的,具体使用有些小区别。 官方文档: 事件冒泡处理不同 bind:绑定的事件会向上冒泡,即触发当前组件的事件后,还会继续触发父组件的相同事件。例如,有一个子视图绑定了b…...
SciencePlots——绘制论文中的图片
文章目录 安装一、风格二、1 资源 安装 # 安装最新版 pip install githttps://github.com/garrettj403/SciencePlots.git# 安装稳定版 pip install SciencePlots一、风格 简单好用的深度学习论文绘图专用工具包–Science Plot 二、 1 资源 论文绘图神器来了:一行…...
《Qt C++ 与 OpenCV:解锁视频播放程序设计的奥秘》
引言:探索视频播放程序设计之旅 在当今数字化时代,多媒体应用已渗透到我们生活的方方面面,从日常的视频娱乐到专业的视频监控、视频会议系统,视频播放程序作为多媒体应用的核心组成部分,扮演着至关重要的角色。无论是在个人电脑、移动设备还是智能电视等平台上,用户都期望…...
Cesium1.95中高性能加载1500个点
一、基本方式: 图标使用.png比.svg性能要好 <template><div id"cesiumContainer"></div><div class"toolbar"><button id"resetButton">重新生成点</button><span id"countDisplay&qu…...
TRS收益互换:跨境资本流动的金融创新工具与系统化解决方案
一、TRS收益互换的本质与业务逻辑 (一)概念解析 TRS(Total Return Swap)收益互换是一种金融衍生工具,指交易双方约定在未来一定期限内,基于特定资产或指数的表现进行现金流交换的协议。其核心特征包括&am…...
令牌桶 滑动窗口->限流 分布式信号量->限并发的原理 lua脚本分析介绍
文章目录 前言限流限制并发的实际理解限流令牌桶代码实现结果分析令牌桶lua的模拟实现原理总结: 滑动窗口代码实现结果分析lua脚本原理解析 限并发分布式信号量代码实现结果分析lua脚本实现原理 双注解去实现限流 并发结果分析: 实际业务去理解体会统一注…...
C++ Visual Studio 2017厂商给的源码没有.sln文件 易兆微芯片下载工具加开机动画下载。
1.先用Visual Studio 2017打开Yichip YC31xx loader.vcxproj,再用Visual Studio 2022打开。再保侟就有.sln文件了。 易兆微芯片下载工具加开机动画下载 ExtraDownloadFile1Info.\logo.bin|0|0|10D2000|0 MFC应用兼容CMD 在BOOL CYichipYC31xxloaderDlg::OnIni…...
代理篇12|深入理解 Vite中的Proxy接口代理配置
在前端开发中,常常会遇到 跨域请求接口 的情况。为了解决这个问题,Vite 和 Webpack 都提供了 proxy 代理功能,用于将本地开发请求转发到后端服务器。 什么是代理(proxy)? 代理是在开发过程中,前端项目通过开发服务器,将指定的请求“转发”到真实的后端服务器,从而绕…...
