当前位置: 首页 > 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;在第一阶…...

应用升级/灾备测试时使用guarantee 闪回点迅速回退

1.场景 应用要升级,当升级失败时,数据库回退到升级前. 要测试系统,测试完成后,数据库要回退到测试前。 相对于RMAN恢复需要很长时间&#xff0c; 数据库闪回只需要几分钟。 2.技术实现 数据库设置 2个db_recovery参数 创建guarantee闪回点&#xff0c;不需要开启数据库闪回。…...

AtCoder 第409​场初级竞赛 A~E题解

A Conflict 【题目链接】 原题链接&#xff1a;A - Conflict 【考点】 枚举 【题目大意】 找到是否有两人都想要的物品。 【解析】 遍历两端字符串&#xff0c;只有在同时为 o 时输出 Yes 并结束程序&#xff0c;否则输出 No。 【难度】 GESP三级 【代码参考】 #i…...

React Native在HarmonyOS 5.0阅读类应用开发中的实践

一、技术选型背景 随着HarmonyOS 5.0对Web兼容层的增强&#xff0c;React Native作为跨平台框架可通过重新编译ArkTS组件实现85%以上的代码复用率。阅读类应用具有UI复杂度低、数据流清晰的特点。 二、核心实现方案 1. 环境配置 &#xff08;1&#xff09;使用React Native…...

多模态大语言模型arxiv论文略读(108)

CROME: Cross-Modal Adapters for Efficient Multimodal LLM ➡️ 论文标题&#xff1a;CROME: Cross-Modal Adapters for Efficient Multimodal LLM ➡️ 论文作者&#xff1a;Sayna Ebrahimi, Sercan O. Arik, Tejas Nama, Tomas Pfister ➡️ 研究机构: Google Cloud AI Re…...

【学习笔记】深入理解Java虚拟机学习笔记——第4章 虚拟机性能监控,故障处理工具

第2章 虚拟机性能监控&#xff0c;故障处理工具 4.1 概述 略 4.2 基础故障处理工具 4.2.1 jps:虚拟机进程状况工具 命令&#xff1a;jps [options] [hostid] 功能&#xff1a;本地虚拟机进程显示进程ID&#xff08;与ps相同&#xff09;&#xff0c;可同时显示主类&#x…...

【Oracle】分区表

个人主页&#xff1a;Guiat 归属专栏&#xff1a;Oracle 文章目录 1. 分区表基础概述1.1 分区表的概念与优势1.2 分区类型概览1.3 分区表的工作原理 2. 范围分区 (RANGE Partitioning)2.1 基础范围分区2.1.1 按日期范围分区2.1.2 按数值范围分区 2.2 间隔分区 (INTERVAL Partit…...

大语言模型(LLM)中的KV缓存压缩与动态稀疏注意力机制设计

随着大语言模型&#xff08;LLM&#xff09;参数规模的增长&#xff0c;推理阶段的内存占用和计算复杂度成为核心挑战。传统注意力机制的计算复杂度随序列长度呈二次方增长&#xff0c;而KV缓存的内存消耗可能高达数十GB&#xff08;例如Llama2-7B处理100K token时需50GB内存&a…...

【数据分析】R版IntelliGenes用于生物标志物发现的可解释机器学习

禁止商业或二改转载&#xff0c;仅供自学使用&#xff0c;侵权必究&#xff0c;如需截取部分内容请后台联系作者! 文章目录 介绍流程步骤1. 输入数据2. 特征选择3. 模型训练4. I-Genes 评分计算5. 输出结果 IntelliGenesR 安装包1. 特征选择2. 模型训练和评估3. I-Genes 评分计…...

[免费]微信小程序问卷调查系统(SpringBoot后端+Vue管理端)【论文+源码+SQL脚本】

大家好&#xff0c;我是java1234_小锋老师&#xff0c;看到一个不错的微信小程序问卷调查系统(SpringBoot后端Vue管理端)【论文源码SQL脚本】&#xff0c;分享下哈。 项目视频演示 【免费】微信小程序问卷调查系统(SpringBoot后端Vue管理端) Java毕业设计_哔哩哔哩_bilibili 项…...

uniapp手机号一键登录保姆级教程(包含前端和后端)

目录 前置条件创建uniapp项目并关联uniClound云空间开启一键登录模块并开通一键登录服务编写云函数并上传部署获取手机号流程(第一种) 前端直接调用云函数获取手机号&#xff08;第三种&#xff09;后台调用云函数获取手机号 错误码常见问题 前置条件 手机安装有sim卡手机开启…...