c primer plus(2)

前言

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

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

简单变量

在本书中变量有三个属性

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.mzph.cn/bicheng/2789.shtml

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

相关文章

人工智能论文GPT-3(1):2020.5 Language Models are Few-Shot Learners;摘要;引言;scaling-law

摘要 近期的工作表明&#xff0c;在大量文本语料库上进行预训练&#xff0c;然后针对特定任务进行微调&#xff0c;可以在许多NLP任务和基准测试中取得实质性进展。虽然这种方法在架构上通常是与任务无关的&#xff0c;但仍然需要包含数千或数万示例的针对特定任务的微调数据集…

我们该如何看待AIGC(人工智能)

目录 AIGC的概述&#xff1a; AIGC的发展经历&#xff1a; AIGC的概述&#xff1a; [TOC]( &#x1f680;文章目录) ---AIGC全称为AI-Generated Content&#xff0c;指基于生成对抗网络GAN、大型预训练模型等人工智能技术&#xff0c;通过已有数据寻找规律&#xff0c;并通过…

数字藏品平台家政平台搭建重点,会用到哪些三方服务?

数字藏品平台搭建重点&#xff1a; 藏品安全性与版权保护&#xff1a;确保数字藏品的安全存储&#xff0c;防止数据丢失或被篡改&#xff0c;同时确保藏品的版权得到合法保护。交易系统的构建&#xff1a;建立一个稳定、透明的交易系统&#xff0c;支持藏品的买卖、竞价等交易…

黑盒优化系列(一):自动化提示词优化【一、绪论】

大语言模型的提示词 随着ChatGPT等大语言模型的问世&#xff0c;我们获取知识的方式从单一的搜索引擎如Google转变为类似ChatGPT这种通过 Q & A 方式提供的方法。 我们尝试对比一下不同提示词&#xff0c;对应的模型输出 ChatGPT无提示词 API&#xff1a; ChatGPT 3.5 …

function calling实现

NLP - LLM - function calling实现 一、function calling介绍二、chatglm3 function calling实现 一、function calling介绍 大型模型如 GPT-4 被设计为能够与外部系统交互&#xff0c;比如通过 API 调用执行某些任务。例如&#xff0c;一个大型模型可能被编程为在需要时调用外…

零代码编程:下载的PDF文件自动批量重命名

从arxiv或者一些其他网站下载的PDF文件&#xff0c;标题只是创建时间&#xff0c;看不出里面内容是什么&#xff0c;要一个个打开看非常麻烦。 可以在GPT4中输入提示词&#xff1a; 你是一个Python编程专家&#xff0c;要完成一个编写关于重命名PDF文件的Python脚本的任务&…

C语言(1):初识C语言

0 安装vs2022 见 鹏哥视频即可 1 什么是C语言 c语言擅长的是底层开发&#xff01; 现在一般用的是C89和C90的标准 主要的编辑器&#xff1a; 2 第一个C语言项目 .c 源文件 .h头文件 .cpp c文件 c语言代码中一定要有main函数 标准主函数的写法&#xff1a; int main() { …

springboot 集成 i18n实现国际化信息返回 实现中英文切换 实现网站支持多语言切换

还是直接上代码 目前实现了 中英文 返回 别的语言 都差不多 主要用spring boot 自带的 类实现的 不用引入任何 依赖 使用的就是下面的类 org.springframework.context.MessageSource 是 Spring Framework 中用于支持国际化&#xff08;Internationalization&#xff0c;简称 i…

大模型入门指南

随着 ChatGPT 的到来&#xff0c;大模型[1]&#xff08;Large Language Model&#xff0c;简称 LLM&#xff09;成了新时代的 buzzword&#xff0c;各种 GPT 产品百花齐放。 大多数人直接用现有产品就可以了&#xff0c;但对于喜欢刨根问底的程序员来说&#xff0c;能够在本地…

华为机考入门python3--(18)牛客18- 识别有效的IP地址和掩码并进行分类统计

分类&#xff1a;字符串 知识点&#xff1a; 字符串是否由数字组成 my_str.isdigit() 字符串填充 不足8位左侧填充0 my_str.zfill(8) 题目来自【牛客】 import sys def classify_ip(ip_mask): ip_class, is_private_ip, mask_class ignore_ip, 0, valid_mask# 解…

【C++】日期计算机

个人主页&#xff1a;救赎小恶魔 欢迎大家来到小恶魔频道 好久不见&#xff0c;甚是想念 今天我们要讲述的是一个日期类计算机的代码实现 引言&#xff1a; 我们日常生活中可能会有一个烦恼。 今天几月几号&#xff1f;过n天后又是几月几号&#xff1f;某年某月某天和x年…

比特币中的符文是什么?

比特币中的符文是什么&#xff1f; 比特币符文是存在于比特币区块链上的独特的、可替代的代币。它们旨在代表具有独特特征和元数据的可替代资产。 Ordinals 协议的创建者 Casey Rodamor 最近放弃了一项替代 BRC-20 可替代代币协议的提案&#xff0c;该替代方案被称为 Runes。 破…

【k8s】Kubernetes 1.29.4离线安装部署(总)

&#xff08;一&#xff09;kubernetes1.29.4离线部署之-安装文件准备 &#xff08;二&#xff09;kubernetes1.29.4离线部署之-镜像文件准备 &#xff08;三&#xff09;kubernetes1.29.4离线部署之-环境初始化 &#xff08;四&#xff09;kubernetes1.29.4离线部署之-组件安装…

掌握Linux Shell脚本函数:提高脚本效率与可维护性

目录标题 1、什么是Shell函数&#xff1f;2、如何定义Shell函数&#xff1f;3、Shell函数参数4、返回值5、实例&#xff1a;使用函数进行文件备份6、为什么使用函数&#xff1f;7、最佳实践 在编写Linux shell脚本时&#xff0c;函数是组织和重用代码的重要手段。本文将介绍如何…

现货白银价格走势分析别走弯路!

参与现货白银投资离不开对其价格走势的分析&#xff0c;虽然相关的分析方法有很多种&#xff0c;但说到直观高效的方法&#xff0c;技术分析就是很多专业投资者所钟爱的选择。投资者可以通过平台交易软件所自带的技术指标和画线工具&#xff0c;来辅助自己的分析&#xff0c;实…

前缀和 求数列的子序列的K倍区间

(直接截图比复制文字要好多了) 不会做的时候我去看了之前做的关于这道题目的笔记&#xff0c; &#xff08;Ak 1&#xff09;% k 1 &#xff08;Ak 1 Ak&#xff09;% k 1 只要发现了同余数的情况就说明有一个区间满足了题目的要求。 这个方法的精妙之处就在于前缀和包括了…

嵌入式Linux driver开发实操(二十一):linux device driver basic设备驱动程序基础

linux的架构框图: 内核空间是内核(即操作系统的核心)执行(即运行)并提供其服务的地方。 用户空间是执行用户应用程序的地方。 内核模块是可以根据需要加载和卸载到内核中的代码片段。它们扩展了内核的功能,而无需重新启动系统。自定义代码可以通过两种方法添加到Linux内…

C++ —— 继承

什么是继承&#xff1f; 继承是指一种代码可以被复用的机制&#xff0c;在一个类的基础上进行扩展&#xff0c;产生的新类叫做派生类&#xff0c;被继承的类叫基类。&#xff08;也可称为子类和父类&#xff09; 继承的写法&#xff1a; class B : 继承方式 A (…

Java高级阶段面试题库(Redis数据库、MQ消息队列、kafka、SpringBoot + SpringCloud、MySQL、JVMJUC、其它)

文章目录 1. Redis数据库篇(忽略)1.1 简单介绍一下redis1.2 单线程的redis为什么读写速度快?1.3 redis为什么是单线程的?1.4 redis服务器的的内存是多大?1.5 为什么Redis的操作是原子性的&#xff0c;怎么保证原子性的&#xff1f;1.6 你还用过其他的缓存吗&#xff1f;这些…