当前位置: 首页 > news >正文

《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类型&#xff1a;字符和小整数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…...

服务器入门

入门服务器管理涉及到一系列基础概念和技能&#xff0c;这包括操作系统、网络配置、安全性、远程访问等。以下是一些建议&#xff0c;可以帮助你开始学习服务器管理&#xff1a; ### 1. **选择合适的操作系统&#xff1a;** - 大多数服务器使用 Linux 操作系统&#xff0c;…...

云端录制直播流视频,上传云盘

前言 哪一天我心血来潮&#xff0c;想把我儿子学校的摄像头视频流录制下来&#xff0c;并保存到云盘上&#xff0c;这样我就可以在有空的时候看看我儿子在学校干嘛。想到么就干&#xff0c;当时花了一些时间开发了一个后端服务&#xff0c;通过数据库配置录制参数&#xff0c;…...

【靶场实战】Pikachu靶场XSS跨站脚本关卡详解

Nx01 系统介绍 Pikachu是一个带有漏洞的Web应用系统&#xff0c;在这里包含了常见的web安全漏洞。 如果你是一个Web渗透测试学习人员且正发愁没有合适的靶场进行练习&#xff0c;那么Pikachu可能正合你意。 Nx02 XSS跨站脚本概述 Cross-Site Scripting 简称为“CSS”&#xff…...

蓝桥杯每日一题-----数位dp

前言 今天浅谈一下数位dp的板子&#xff0c;我最初接触到数位dp的时候&#xff0c;感觉数位dp老难了&#xff0c;一直不敢写&#xff0c;最近重新看了一些数位dp&#xff0c;发现没有想象中那么难&#xff0c;把板子搞会了&#xff0c;变通也会变的灵活的多&#xff01; 引入…...

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控件为例&#xff0c;实现表格内数据的相互拖拽。 1拖拽演示 2 步骤 自定以QTableView类&#xff0c;在自定义类中重写拖拽事件&#xff1a; void dropEvent(QDropEvent *event); void dragEnterEvent(QDragEnterEvent *…...

基于MATLAB实现的OFDM仿真调制解调,BPSK、QPSK、4QAM、16QAM、32QAM,加性高斯白噪声信道、TDL瑞利衰落信道

基于MATLAB实现的OFDM仿真调制解调&#xff0c;BPSK、QPSK、4QAM、16QAM、32QAM&#xff0c;加性高斯白噪声信道、TDL瑞利衰落信道 相关链接 OFDM中的帧&#xff08;frame&#xff09;、符号&#xff08;symbol&#xff09;、子载波&#xff08;subcarriers&#xff09;、导频…...

Redis核心技术与实战【学习笔记】 - 21.Redis实现分布式锁

概述 在《20.Redis原子操作》我们提到了应对并发问题时&#xff0c;除了原子操作&#xff0c;还可以通过加锁的方式&#xff0c;来控制并发写操作对共享数据的修改&#xff0c;从而保证数据的正确性。 但是&#xff0c;Redis 属于分布式系统&#xff0c;当有多个客户端需要争…...

17.Golang channel的基本定义及使用

目录 概述实践无缓冲 channel代码结果 缓冲 channel代码结果 channel的关闭特点代码结果range代码结果 select channel代码结果 结束 概述 此篇文章介绍 channel 的用法 无缓冲 channel缓冲 channelchannel的关闭特点range channelselect channel 每一种&#xff0c;配上完整…...

Linux - iptables 防火墙

一. 安全技术和防火墙 1.安全技术 入侵检测系统&#xff08;Intrusion Detection Systems&#xff09;&#xff1a;特点是不阻断任何网络访问&#xff0c;量化、定位来自内外网络的威胁情况&#xff0c;主要以提供报警和事后监督为主&#xff0c;提供有针对性的指导措施和安全…...

如何在FBX剔除Lit.shader依赖

1&#xff09;如何在FBX剔除Lit.shader依赖 2&#xff09;Unity出AAB包&#xff08;PlayAssetDelivery&#xff09;模式下加载资源过慢问题 3&#xff09;如何在URP中正确打出Shader变体 4&#xff09;XLua打包Lua文件粒度问题 这是第371篇UWA技术知识分享的推送&#xff0c;精…...

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&#xff08;创意云&#xff09;中的Illustrator作为一款全球领先的矢量图形设计软件&#xff0c;为设计师提供了丰富的功能和无限的创作可能性。为了进一步增强其功能并满足个性化工作流程需求&#xff0c;Adobe引入了Common Extensibility Platform…...

【Spring】自定义注解 + AOP 记录用户的使用日志

目录 ​编辑 自定义注解 AOP 记录用户的使用日志 使用背景 落地实践 一&#xff1a;自定义注解 二&#xff1a;切面配置 三&#xff1a;Api层使用 使用效果 自定义注解 AOP 记录用户的使用日志 使用背景 &#xff08;1&#xff09;在学校项目中&#xff0c;安防平台…...

linux互斥锁:递归锁,非递归锁用法详解

在实际的项目中经常涉及到共享资源,共享资源被多个线程访问会出现竞争现象;为了解决竞争和保护共享资源常用的机制之一就是互斥锁! 互斥锁又分为递归锁和非递归锁,互斥锁默认是非递归锁,也是我们常用的上锁方式。那么什么是递归锁和非递归锁呢? 非递归锁(Non-recursive …...

MacOS安装dmg提示已文件已损坏的解决方法

MacOS安装dmg提示已文件已损坏的解决方法 导致原因是应用没有上传到苹果的appstroe&#xff0c;系统限制了安装&#xff0c;破碎提示是苹果的误导小手段 方法 一 App 在macOS Catalina&#xff08;比较新的系统&#xff0c;例如m1&#xff0c;m2也适用&#xff09;下提示已损坏…...

前端输入框简单实现检测@成员输入

大体逻辑是 给input框添加一个input监听&#xff0c;并判断输入是否为获取当前光标的位置&#xff0c;你输入的肯定在光标之前&#xff0c;且肯定是最后一个input输入的内容换行可以被认为空格&#xff0c;需要进行全局替换判断成功的逻辑分为两部分&#xff0c;前方一般来说是…...

通过与chatGPT交流实现零样本事件抽取

1、写作动机&#xff1a; 近来的大规模语言模型&#xff08;例如Chat GPT&#xff09;在零样本设置下取得了很好的表现&#xff0c;这启发作者探索基于提示的方法来解决零样本IE任务。 2、主要贡献&#xff1a; 提出了基于chatgpt的多阶段的信息抽取方法&#xff1a;在第一阶…...

AI-调查研究-01-正念冥想有用吗?对健康的影响及科学指南

点一下关注吧&#xff01;&#xff01;&#xff01;非常感谢&#xff01;&#xff01;持续更新&#xff01;&#xff01;&#xff01; &#x1f680; AI篇持续更新中&#xff01;&#xff08;长期更新&#xff09; 目前2025年06月05日更新到&#xff1a; AI炼丹日志-28 - Aud…...

stm32G473的flash模式是单bank还是双bank?

今天突然有人stm32G473的flash模式是单bank还是双bank&#xff1f;由于时间太久&#xff0c;我真忘记了。搜搜发现&#xff0c;还真有人和我一样。见下面的链接&#xff1a;https://shequ.stmicroelectronics.cn/forum.php?modviewthread&tid644563 根据STM32G4系列参考手…...

微信小程序之bind和catch

这两个呢&#xff0c;都是绑定事件用的&#xff0c;具体使用有些小区别。 官方文档&#xff1a; 事件冒泡处理不同 bind&#xff1a;绑定的事件会向上冒泡&#xff0c;即触发当前组件的事件后&#xff0c;还会继续触发父组件的相同事件。例如&#xff0c;有一个子视图绑定了b…...

SciencePlots——绘制论文中的图片

文章目录 安装一、风格二、1 资源 安装 # 安装最新版 pip install githttps://github.com/garrettj403/SciencePlots.git# 安装稳定版 pip install SciencePlots一、风格 简单好用的深度学习论文绘图专用工具包–Science Plot 二、 1 资源 论文绘图神器来了&#xff1a;一行…...

《Qt C++ 与 OpenCV:解锁视频播放程序设计的奥秘》

引言:探索视频播放程序设计之旅 在当今数字化时代,多媒体应用已渗透到我们生活的方方面面,从日常的视频娱乐到专业的视频监控、视频会议系统,视频播放程序作为多媒体应用的核心组成部分,扮演着至关重要的角色。无论是在个人电脑、移动设备还是智能电视等平台上,用户都期望…...

Cesium1.95中高性能加载1500个点

一、基本方式&#xff1a; 图标使用.png比.svg性能要好 <template><div id"cesiumContainer"></div><div class"toolbar"><button id"resetButton">重新生成点</button><span id"countDisplay&qu…...

TRS收益互换:跨境资本流动的金融创新工具与系统化解决方案

一、TRS收益互换的本质与业务逻辑 &#xff08;一&#xff09;概念解析 TRS&#xff08;Total Return Swap&#xff09;收益互换是一种金融衍生工具&#xff0c;指交易双方约定在未来一定期限内&#xff0c;基于特定资产或指数的表现进行现金流交换的协议。其核心特征包括&am…...

令牌桶 滑动窗口->限流 分布式信号量->限并发的原理 lua脚本分析介绍

文章目录 前言限流限制并发的实际理解限流令牌桶代码实现结果分析令牌桶lua的模拟实现原理总结&#xff1a; 滑动窗口代码实现结果分析lua脚本原理解析 限并发分布式信号量代码实现结果分析lua脚本实现原理 双注解去实现限流 并发结果分析&#xff1a; 实际业务去理解体会统一注…...

C++ Visual Studio 2017厂商给的源码没有.sln文件 易兆微芯片下载工具加开机动画下载。

1.先用Visual Studio 2017打开Yichip YC31xx loader.vcxproj&#xff0c;再用Visual Studio 2022打开。再保侟就有.sln文件了。 易兆微芯片下载工具加开机动画下载 ExtraDownloadFile1Info.\logo.bin|0|0|10D2000|0 MFC应用兼容CMD 在BOOL CYichipYC31xxloaderDlg::OnIni…...

代理篇12|深入理解 Vite中的Proxy接口代理配置

在前端开发中,常常会遇到 跨域请求接口 的情况。为了解决这个问题,Vite 和 Webpack 都提供了 proxy 代理功能,用于将本地开发请求转发到后端服务器。 什么是代理(proxy)? 代理是在开发过程中,前端项目通过开发服务器,将指定的请求“转发”到真实的后端服务器,从而绕…...