c++ primer plus(2)

news2024/9/21 19:09:09

前言

延续上一讲的内容,今天来写一写这本书的第三章:处理数据

好吧,本次博客仍然是总结重点内容

简单变量

在本书中变量有三个属性

1信息存储在什么地方

2要存储什么

3存储类型

比如

int braincount;
braincount=5;

这两行代码体现了这几个属性,首先作为局部变量信息储存在栈区

存储类型为int整型,存储了一个5

变量名

1名称中只能使用字母字符,数字,和下划线

2名称第一个字符不能是数字

3不能将c++关键字作为变量名,比如int     auto     long       go     break等等

整型

short    int     long   和long long

这里要补充位与字节的知识

一字节为8位

在计算机是以二进制存储信息,而一位可以表示0或一

那么一个字节可以表示的范围为-128~127(包括0)此时为有符号

或者是0~255此时是无符号

一共正好是2的8次方个数字

继续,1MB=1024KB=1024*1024B

好吧,依据传统,再来看看各个类型有多少字节

看代码呗

int main()
{
	cout << sizeof(char)<<endl;
	cout << sizeof(short)<<endl;
	cout << sizeof(int)<<endl;
	cout << sizeof(long) << endl;
	cout << sizeof(long long)<<endl;
	cout << sizeof(float)<<endl;
	cout << sizeof(double)<<endl;
	return 0;
}

当然,实际上 short类型是short int的缩写,long是long int 的缩写

接下来来看各个类型可表示的最大最小值

climits头文件

直接看代码

int main()
{
	cout << "char所占字节为" << sizeof(char) << "最大值为" << CHAR_MAX << "最小值" << CHAR_MIN<< endl;
	cout << "int所占字节为" << sizeof(int) << "最大值为" << INT_MAX << "最小值" << INT_MIN << endl;
	cout << "short所占字节为" << sizeof(short) << "最大值为" << SHRT_MAX << "最小值" << SHRT_MIN << endl;
	cout << "long long所占字节为" << sizeof(long long) << "最大值为" << LLONG_MAX << "最小值" << LLONG_MIN << endl;
	cout << "unsigned int所占字节为" << sizeof(int) << "最大值为" << UINT_MAX << endl;
	cout << "unsigned long long所占字节为" << sizeof(long long) << "最大值为" << ULLONG_MAX<< endl;
	return 0;
}

看结果

值得注意的是,这个大写字母,比如INT_MAX

它实际上是宏定义,而且在命名是也有特点,首先是全部为大写   类型_最值

注意无符号数没有最小值这个宏定义

好吧在这本书中

把这些符号称为 符号常量

整形溢出问题

比如,我们就以char类型为例来说明问题

大家看char 类型表示的范围为-128~127

如果一个char类型的数已经是一个127此时再加上一个1,一般就会变成-128

同理如果一开始是-128再减去一个1,就会变成127

这个类似与一个环

当然这本身是错误行为,我们不能出现溢出问题,在c++中是未定义行为,不保证每个编译器都是这个结果

C语言vs中是这个结果但是c++就出现了错误

这明显是错误的

整型字面值

其实就是进制问题

和c语言很像,比如int a=0x16;0x表示16进制数,注意0x是数字0不是字母o

并且x可以大写也可以小写

那么再看int b=05,此时是八进制数,注意呀最高位为0且除最高位以外没有大于7的数,这时才是八进制

这个c语言也学了,但还是多写一遍

上面其实是读取数字,但是默认的情况下,cout输出只会为10进制数

那么我们可以通过 dec(10进制) hex(16进制) oct(8进制)

具体就是

一开始cout为10进制

cout<<hex;之后输出的数变为16进制

接下来还是看代码实现吧

#include <iostream>
#include <limits>
using namespace std;
int main() {
    int a = 0x5F;
    int b = 20;
    int c = 075;
    //十进制数表示
    cout << a << " " << b << " " << c << endl;
    //16进制表示
    cout << hex;
    cout << a << " " << b << " " << c << endl;
    //8进制表示
    cout << oct;
    cout << a << " " << b << " " << c << endl;
    return 0;
}

hex oct dec 都是存在于std这个变量空间的

如果忽略using指令那么就要是用 std ::hex要加上一个std ::前缀

同类类型转换问题

首先

我们的对于一个整型常量来说,它的默认类型为int

如果小于int,在赋值时会发生截断问题,就只取到当前类型大小的字节数

如果大于int,就会根据大小重新匹配

也就是一种类型的转换

那么,我们可以在数字前面加上一个后缀,就可以减少这种操作

从而节省时间

常见的后缀为

L        UL      ULL分别表示long unsigned long 以及 unsinged long long

接下来是字符

char:字符和小整数

这里的char类型几乎和c语言一样,但是要注意的是有一个

新的知识点就是,cout.put()函数,其实就是成员函数

作用就是输出一个字符

看代码吧

这是针对于一个字符的不同操作

成员函数

接下来这本书就介绍了成员函数的一些概念

总而言之,可以这么解释

c++中是面向对象的泛型编程

对象的属性有两种,1是数据结构 可以理解为结构体

                                 2是自定义函数 可理解为一个一个操作

那么这本书在这里第一次介绍这个概念,cout.put()

Ascll表以及转义字符

对于Ascll表的直接看图就行了

不过最好记住

字符a对应数字97 字符A 对应数字65

字符b对应数字98 字符B对应数字66 等等依次论推

温馨提示一共有26个字母哟

那么再来

字符0对应数字48 字符1对应数字49

一直到字符9对应数字57 没有字符10 哈哈哈

温馨提示 \0转义字符对应的数字为0

不要把数字0与字符0搞错,这些其实非常重要

还有一个

\ddd 这里的d表示数字,这里是一个字符,表⽰1~3个⼋进制的数字 

\xdd 这里的d表示数字,这里同样也是一个字符 表⽰2个⼗六进制数字

既然是一个字符那么它的数字的值代表的就是对应的ascll值,

在字符串中,只会把它打印成字符

其他的转义字符没有太多的必要,看图就行

字符集

Unicode 字符集和ISO 10646字符集

其实这个主要针对国际化编程

说来说去就是Ascll表示的字符太少啦

要构建新的字符集,来迎合国际化

但是这里还是衍生出几种还挺有用的类型

wchar_t类型

用来处理宽字符

其实中文字就是宽字符

那如何使用呢

看代码

#include <cwchar>
#include <iostream>
 
int main() {
    // 定义宽字符串
    const wchar_t* wstr = L"这是一个宽字符串";
 
    // 打印宽字符串
    std::wcout << wstr << std::endl;
 
    // 获取宽字符串长度
    std::cout << "Length of the string: " << std::wcslen(wstr) << std::endl;
 
    return 0;
}

bool类型

bool类型占一个位的空间,来判断真假性

true为非0

false为0

const限定符

书上值得注意的点是

要在const int a=10定义时赋值

如果是 const int a;a=10//error

浮点数

这个与C语言一样

一般float 为6~7个有效数字

double为15~16个

大家想要深入了解的话可以看看,我之前写过的整型与浮点型在内存的存储方式-CSDN博客

当然,我们还要补充内容

一个浮点数常量默认为double类型

如果想要避免类型转换带来的负面影响

可以提前加入后缀

一般就是使用后缀f

比如 float a=1.0f//这样就不会类型转换了

运算符

运算符在之前,我也写过详细讲解其实与c语言一样,大家可以看看C语言操作符详细讲解-CSDN博客

异类类型转换

这个总结一句话

如果是一个同类long long转化为int可能会丢失数据

因为会截断

如果是

int转化为long long那么值不影响但是空间占用更多

如果是浮点型转化为整型

这会把浮点型的小数部分丢弃

如果是整型转化为浮点型

那么在浮点型可表述的数大的时候,数据不会丢失,否则数据丢失

强制类型转换()

多用于指针

接下来就是题目了

编程练习

OK都是简单基础入门题

挑几个来写

1 使用一个整数指出身高(单位为英寸),分别转化为英寸,英尺

使用const来表示转换因子,

1 英寸=0.0833333333333 英尺

#include <iostream>
#include <limits>
using namespace std;
const float infer = 0.083;
int main()
{
	int a;
	cout << "请输入一个以英寸为单位的身高";
	cin>>a;
	cout << "您的身高为" << a << "英寸" << a * infer << "英尺";
	return 0;
}

当然,相信cout会自动识别浮点型以及整型

再来一题把

其实,好多题目都是一样的

2编写一个程序,要求按欧洲的汽车耗油量(每100公里消耗的汽油量(升))然后转化为

美国风格每加仑多少英里

100公里等于64.14英里

1加仑仑为3.785升

OK,直接double就行

#include <iostream>
#include <limits>
using namespace std;
int main()
{
	double out;
	cin >> out;
	cout << (out/3.785)/62.14;
	return 0;
}

​​​​​​​

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

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

相关文章

找不到mfc140u.dll文件如何处理?这三种方法帮你快速修复mfc140u.dll

当你的电脑出现提示&#xff0c;显示找不到mfc140u.dll文件&#xff0c;从而无法继续执行代码&#xff0c;你需要知道如何应对这种情况。今天我们就来详细说明如何解决mfc140u.dll文件丢失的问题&#xff0c;并对该文件进行详细分析。这个文件是Microsoft Visual Studio的一个重…

Vue从入门到精通-01-Vue的介绍和vue-cli

MVVM模式 Model&#xff1a;负责数据存储 View&#xff1a;负责页面展示 View Model&#xff1a;负责业务逻辑处理&#xff08;比如Ajax请求等&#xff09;&#xff0c;对数据进行加工后交给视图展示 关于框架 为什么要学习流行框架 1、企业为了提高开发效率&#xff1a;…

idea的插件,反编译整个jar包

idea的插件&#xff0c;反编译整个jar包 1.安装插件1.1找到插件1.2 搜索插件 2.反编译整个jar包2.1 复制jar包到工件目录下&#xff1a;2.2 选中jar包&#xff0c;点出右键 3.不用插件&#xff0c;手动查看某一个java类3.1 选中jar包&#xff0c;点出右键 1.安装插件 1.1找到插…

VPN的基本概念

随着互联网的普及和应用的广泛&#xff0c;网络安全和隐私保护越来越受到人们的关注。在这个信息爆炸的时代&#xff0c;我们的个人信息、数据通信可能会受到各种威胁&#xff0c;如何保护自己的隐私和数据安全成为了一个迫切的问题。而VPN&#xff08;Virtual Private Network…

用Jenkins Gerrit-Trigger插件实现提交gerrit后自动启动编译验证

说明&#xff1a;如果没有gerrit-trigger&#xff0c;说明缺少插件&#xff0c;先安装插件即可。 步骤 1.在Jenkins首页点击Manage Jenkins 2.点击Gerrit Trigger 3.配置gerrit服务器 下图是已配置好的gerrit服务器&#xff0c;配置完毕记得点击status下面的按钮进行测试服务…

Linux学习之路 -- 进程篇 -- 自定义shell的编写

前面介绍了进程程序替换的相关知识&#xff0c;接下来&#xff0c;我将介绍如何基于前面的知识&#xff0c;编写一个简单的shell&#xff0c;另外本文的所展示的shell可能仅供参考。 目录 <1>获取用户的输入和打印命令行提示符 <2>切割字符串 <3>执行这个…

网络安全的防护措施有哪些?

1. 安全策略和合规性 2. 物理和网络安全 3. 数据加密 4. 软件和系统更新 5. 访问控制 6. 威胁监测和响应 7. 员工培训和安全意识 8. 备份和灾难恢复 零基础入门学习路线 视频配套资料&国内外网安书籍、文档 网络安全面试题 网络安全的防护措施多种多样&#xff0c…

openssl3.2 - exp - 使用默认的函数宏,在release版中也会引入__FILE__

文章目录 openssl3.2 - exp - 使用默认的函数宏&#xff0c;在release版中也会引入__FILE__概述笔记验证是否__FILE__在release版下也能用&#xff1f;将openssl编译成release版的&#xff0c;看看CRYPTO_free()是否只需要一个参数就行&#xff1f;将工程中的openssl相关的库换…

Vue---组件

Vue—组件 目录 Vue---组件定义组件全局组件局部组件 组件通讯***重点***父子通信之父传子&#xff08;props&#xff09;父子通信之子传父&#xff08;$emit&#xff09;ref属性&#xff08;$refs&#xff09; 动态组件插槽命名插槽 定义组件 全局组件 vue2中template只能传…

2.Neo4j的搭建启动

Graph Database 图数据库 版本对应关系 官网都是高版本&#xff0c;推荐使用下载地址可以找到社区老版本&#xff1a; https://we-yun.com/doc/neo4j/ neo4j.bat 启动脚本 cypher-shell.bat 执行CQL语句的。 import文件夹可以放入excel,csv等数据文件&#xff0c;导入到…

IMU/捷联惯导常见的术语,以及性能评价标准(附Python解析代码)

0. 简介 现在的机器人领域在普遍使用IMU&#xff08;惯性导航单元&#xff09;。该系统有三个加速度传感器与三个角速度传感器&#xff08;陀螺&#xff09;组成&#xff0c;加速度计用来感受飞机相对于地垂线的加速度分量&#xff0c;陀螺仪用来感知飞机的角速率变化&#xff…

服务器被CC攻击怎么办

遇到CC攻击时&#xff0c;可采取以下措施&#xff1a;限制IP访问频率、启用防DDoS服务、配置Web应用防火墙、增加服务器带宽、使用负载均衡分散请求压力。 处理服务器遭遇CC攻击的方法如下&#xff1a; 1. 确认攻击 你需要确认服务器是否真的遭受了CC攻击&#xff0c;这可以…

基于单片机的多功能电子万年历系统

摘要:该题目要求学生综合运用单片机原理、低频电子线路、数字电路与逻辑设计等相关知识,设计完成多功能电子万年历系统。通过完成设计任务,使学生掌握单片机设计开发的基本流程,增强学生动手实践能力,培养学生分析和解决实际问题的能力,为后续课程的学习和工作打下良好基础。 关…

张大哥笔记:我付钱了,我就是大爷?

很抱歉用这个当做标题&#xff0c;来给大家分享一些电商的故事&#xff01;大家好&#xff0c;我是张大哥&#xff0c;今天聊聊在电商路上遇到过的奇葩买家&#xff1f; 比如最近我在做PDD的时候&#xff0c;就会遇到很多莫名其妙的sha子&#xff0c;咱是知识份子&#xff0c;肯…

Excel vlookup函数的使用教程 和 可能遇到的错误解决方法

使用VLOOKUP示例 被查询的表格 表一 A列B列C列A1aB2bC3c 要匹配的列 表二 F列G列H列ACBDA 要G列匹配字母&#xff0c;H列匹配数字 G 使用公式VLOOKUP(F5,A:D,3,0) 参数说明 F5 是表二 F列第五行的A A:D表是要匹配的数据列表在A到D列&#xff0c;就是表一 &#xff08;注意…

go 安装软件报go.mod file not found

执行 go get -u github.com/go-sql-driver/mysql 下载mysql 报错 解决方法: 控制台&#xff1a;输入go env 返回如下&#xff1a; 红圈值为NUL&#xff0c;需要设置GOMOD的值, 然后再控制台执行 &#xff08;1&#xff09;mkdir mod (2)go mod init mod 然后再执行下载&…

Linux逻辑方式合并物理磁盘

在日常生活中&#xff0c;我们总是遇到一个文件太大&#xff0c;以至于我们的两个磁盘都装不下&#xff0c;这时我们就需要将两块物理磁盘逻辑化的连接在一起&#xff0c;把物理磁盘使用逻辑化的方法合并在一起&#xff0c;形成卷组&#xff0c;使得磁盘空间可以公用&#xff1…

【idea】idea 中 git 分支多个提交合并一个提交到新的分支

一、方法原理讲解 我们在 dev 分支对不同的代码文件做了多次提交。现在我们想要把这些提交都合并到 test 分支。首先我们要明白四个 git 操作&#xff0c; commit&#xff1a;命令用于将你的代码变更保存到本地代码仓库中&#xff0c;它创建了一个新的提交&#xff08;commit…

Python 操作PDF图片 – 添加、替换、删除PDF中的图片

PDF文件中的图片可以丰富文档内容&#xff0c;提升用户的阅读体验。除了在PDF中添加图片外&#xff0c;有时也需要替换或删除其中的图片&#xff0c;以改进视觉效果或更新信息。文本将提供以下三个示例&#xff0c;介绍如何使用Python 操作PDF文件中的图片&#xff1a; 目录 …

2017年全国职业院校技能大赛高职组“信息安全管理与评估”样题

培训、环境、资料、考证 公众号&#xff1a;Geek极安云科 网络安全群&#xff1a;624032112 网络系统管理群&#xff1a;223627079 网络建设与运维群&#xff1a;870959784 移动应用开发群&#xff1a;548238632 极安云科专注于技能提升&#xff0c;赋能 2024年广东省高校的技…