【C++修行之路】C++入门之深剖变量

news2024/11/17 21:16:32

🍿本文主题:C++语法中的变量
🎈更多内容:C++较C的改进
💕我的主页:蓝色学者

文章目录

  • 前言
  • 概念
    • 什么是变量
    • 变量名
    • 变量类型
    • 为什么要有不同数据类型
    • 各自数据类型的本质
  • 结语

前言

大家好久不见,今天是我们C++修行之路的第二节课,今天我们将一起来学习计算机中最重要,也是最基础的内容——变量。

概念

什么是变量

变量是用来干什么的?,变量其实就是拿来存储数据的!!!

假如你正在玩一款游戏,那么你的账号信息,地图信息,通过情况等等,这些数据就要被存储起来,而我们变量就是来存储这些数据的!
既然变量是用来存放数据的,生活中,我们把书本放进书包,对于编程来说,我们的数据同样需要一个空间来存储,这个空间就是变量!


变量名

变量和生活中的容器一样都有自己的名字,同样是称液体的杯子,有的叫塑料瓶,有的叫茶杯,有的叫水壶,变量与之相同,也有自己的名字!
变量的命名通常是没有要求的,但应该遵循以下三种原则,例如,我们自定义的变量cout使程序发生了混乱!

  1. 变量名只能是字母(A-Z,a-z)和数字(0-9)或者下划线(_)组成
  2. 第一个字母必须是 字母 ‾ \underline{\text{字母}} 字母或者 下划线 ‾ \underline{\text{下划线}} 下划线开头。
  3. 不能使用C++关键字来命名变量,以免冲突

在这里插入图片描述


变量类型

是数据就要有自己的类型,设想一下,你的名字绝不可能是一串数字,你的年龄也绝不可能是一行文字,程序中,每种变量都有自己的类型,比如整型用int来表示,字符类型用char来表示,因此在C++中,要表示一个数据,不仅需要有变量,还要指定这个变量的数据类型

int a = 10;//int 表示数据类型为整形,a是我们给变量起的名称,10是这个变量具体的值!

数据类型有多种,常见的有:int(整形)char(字符型)double(双精度浮点型)float(单精度浮点型)long long(长整形)bool(布尔类型)…
当然你可以使用struct关键字来设计自己的类型

在这里插入图片描述


为什么要有不同数据类型

不同的变量类型尽管每种变量都有自己的类型,但所有类型本质上的区别只有一个:那就是所表示数字的范围不同

为什么这么说?

众所周知,计算机底层存储的机制都是二进制,也就是说,计算机只认识0和1这两个数字,任何数据本质上都是以二进制的形式来存储的,所以说数据本质上都是同根同源的!

int main()
{
	char a = 64;
	int b = 10;
	cout << a << endl;
	cout << b << endl;
}

运行上述代码,我们发现编译器是不会报错给我们的,这也就是说明任何数据本质上存储方式都是一致的,那为什么要有数据类型这个概念呢?

设想一下,现在有两个容器,一个书包 ,一个水桶,我要你帮我装一本书进去,你肯定会用书包去装,所以其实数据类型更像一种约定俗称,是帮助我们程序员更好的设计程序用到的

要存储一个字符,我们就使用char类型变量;要存储一个数字,我们就使用int类型变量!


各自数据类型的本质

🎶理解了为什么要有变量类型,我们来看一下之前的问题:既然他们本质上都存储数字,那为什么数字范围会不同呢?
想要理解这个问题,就要去深入理解一下计算机存储数据的本质,我们知道,计算机中信息量的最小单位是比特(bit)——bit只能存储1或者0这两个数字,8个比特位组成一个字节(byte),在64位操作系统中,int类型由4个字节组成,其他如表:
类型大小(字节)
char1
double8
float4
long8
bool1

我们可以通过sizeof操作符来检验我们的操作是否正确:

int main()
{
	cout << sizeof(int) << endl;
	cout << sizeof(char) << endl;
	cout << sizeof(long) << endl;
	cout << sizeof(long) << endl;
	cout << sizeof(bool) << endl;
}

结果如图:
在这里插入图片描述
根据上面所讲,我们不难算出:

  1. int类型占64个比特位
  2. char类型占8个比特位

一个比特位可以存放1或者0,不要忘了,有一个符号位我们要留出来判断是正数还是负数,因此

  1. int类型实际有63个比特位表示数据
  2. char类型实际由7个比特位表示数据

不难算出,int的最大取值应该是 231,而char的最大取值是 27

可见不同数据类型在本质上是完全一致的,人为赋予了他们代表不同的字段,他们的大小决定了能表示的范围,仅此而已!

结语

到这里,我们今天讲解的有关变量的内容就结束了,如果你感觉有所收获,可以点赞 + 收藏 +关注 支持一下学者哦~ 我们下次见~

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

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

相关文章

22.1.29打卡 2023牛客寒假算法基础集训营1 ACDHKLM

2023牛客寒假算法基础集训营1_ACM/NOI/CSP/CCPC/ICPC算法编程高难度练习赛_牛客竞赛OJ 网上高质量题解太多了, 我这就作为打卡日报随便写写 A 四个变量 a b记录两队得分 c d记录两队最多还能获得的得分 简单模拟 /* ⣿⣿⣿⣿⣿⣿⡷⣯⢿⣿⣷⣻⢯⣿⡽⣻⢿⣿⣿⣿⣿⣿⣿⣿⣿…

Ruoyi-Cloud框架学习-【02 Redis安装搭建+Ruoyi下载+Nacos数据库配置】

Redis服务端与客户端的安装与搭建 参考该博文 https://joycez.blog.csdn.net/article/details/128776284?spm1001.2014.3001.5502 安装文件 链接&#xff1a;https://pan.baidu.com/s/1v19C9Dhh-ZkNQ8l1RVGQkA 提取码&#xff1a;6mim Ruoyi-Cloud下载以及数据库配置 1、前…

MySQL主从复制的数据同步延迟(二)

1、介绍 主从复制环境在单机应用的时候没有问题&#xff0c;但是在实际的生产环境中&#xff0c;会存在 复制延迟 的问题 查看从库同步状态 在从库中执行 show slave status\G &#xff1a; mysql> show slave status\G *************************** 1. row **************…

Matlab论文插图绘制模板第73期—带等高线的光影曲面图

在之前的文章中&#xff0c;分享了Matlab曲面图的绘制模板&#xff1a; 光影曲面图&#xff1a; 带等高线的曲面图&#xff1a; 进一步&#xff0c;再来看一下带等高线的光影曲面图的绘制模板。 先来看一下成品效果&#xff1a; 特别提示&#xff1a;Matlab论文插图绘制模板系…

make <board_name>_defconfigmake menuconfig

1.make <board_name>_defconfig (1)在uboot的顶层目录的Makefile中查找目标&#xff08;defconfig无法查到&#xff09;&#xff0c;检索config&#xff0c;找到目标config和目标%config 因为我们的目标为<board_name>_defconfig&#xff0c;所以需要看的是有通配…

发现了一个提取时间序列技术指标的神器

互联网上有一个最简单而又强大的技术库&#xff0c;叫做pandas_ta。这个python库为你提供了一个简化的API&#xff0c;让你从时间序列中提取技术分析指标。今天我将和大家一起学习这个库。记得点赞、收藏&#xff5e; 虽然你可能会将这些函数应用于股票价格&#xff0c;但你可…

python开发环境搭建实践

这里写自定义目录标题前言搭建过程anaconda下载与安装下载安装配置环境变量pycharm下载和安装下载安装激活总结前言 新年新气象&#xff0c;我也把电脑进行了重装系统。所以现在需要重新搭建各种开发环境&#xff0c;也不能说是各种&#xff0c;因为我只会python和Java。 先搭…

全国产交换机基本介绍(分类、性能指标、硬件构成及工作方式)

关于全国产交换机基础知识&#xff0c;您了解多少呢&#xff1f;来和海翎光电的小编一起学习一下吧&#xff01; 一、交换机的分类与性能指标 1.1 交换机的分类 按照网络构成方式来分的话&#xff0c;交换机分为三类&#xff1a;接入层交换机、汇聚层交换机和核心层交换机。按照…

93.transformer、多头注意力以及代码实现

1. Transformer架构 2. 多头注意力 3. 数学上来解释多头注意力 4. 有掩码的多头注意力 5. 基于位置的前馈网络 6. 层归一化 batch norm&#xff1a;比如说一行是一个样本&#xff0c;那么BN就是对一列进行归一化&#xff0c;就是对所有数据项的某一列特征进行归一化 layer nor…

【数据结构和算法】了解认识栈,并实现栈的相关函数

到现在我们了解并认识了线性表的概念&#xff0c;动态、静态顺序表的建立&#xff0c;以及两种链表的实现&#xff0c;接下来我们要认识一个新的内容&#xff0c;新的概念&#xff0c;栈&#xff0c;是基于顺序表或者链表的一种新型数据结构。 目录 一、栈是什么&#xff1f; …

RabbitMQ入门中篇

本篇博文目录一.Spring整合RabbitMQ1.导入依赖2.生产者3.消费者4.测试二.SpringBoot整合RabbitMQ1.导入依赖2.生产者3.消费者4.测试三.代码下载一.Spring整合RabbitMQ 在spring项目中使用RabbitMQ的Exchange模式的Topics&#xff0c;项目分为消费者spring项目和生产者spring项目…

Centos7安装kvm服务器

Centos7安装kvm服务器什么是kvm检查硬件是否支持kvm虚拟化启用嵌套虚拟化(可选)查看是否启用嵌套虚拟化嵌套虚拟化立即生效(临时)重新加载模块并验证虚拟机硬件直通虚拟机内查看嵌套虚拟化是否成功安装kvm服务器安装kvm的所有包(不推荐)启动libvirt服务查看是否正确设置了虚拟化…

Linux操作系统之线程安全

一、引入线程安全关于strtok函数不能在多线程中使用&#xff0c;为什么&#xff1f;运行结果原因如下&#xff1a;在strtok内部会有一个全局变量静态指针&#xff08;static char* ptr&#xff09;&#xff0c;一开始指针指向主线程的a&#xff0c;等到后面子线程开始分割时&am…

18 Java反射reflect(类加载+获取类对象+通用操作+设计模式+枚举+注解)

Java反射18 反射reflect18.1 类的加载18.2 Class对象18.3 获取类对象的3种方法18.4 反射通用操作18.4.1 常见方法18.4.2 通用操作18.5 设计模式18.5.1 概念18.5.2 好处18.5.3 工厂设计模式18.5.4 单例模式18.6 枚举18.7 注解18.7.1 概念18.7.2 定义注解18.7.3 注解属性类型18.7…

知名休闲服饰品牌——慕尚集团借力泛微实现统一办公、业务协同

客户简介 宁波中哲慕尚控股有限公司&#xff08;以下简称慕尚集团&#xff09;是中国知名的由新零售模式驱动的休闲时尚服饰多品牌运营公司。 旗下品牌有GXG,gxgjeans,gxg.kids,MODE COMMUTER等&#xff0c;覆盖时尚男女装、童装市场和其他时尚领域。2019年5月慕尚集团正式登…

不要在线上滥用CopyOnWriteArrayList,姿势不对性能真的很拉胯

从JDK1.5版本&#xff0c;JAVA提供了线程安全的List增强版CopyOnWriteArrayList&#xff0c;其保持线程安全的方式是&#xff1a;每次修改数据时&#xff0c;不会直接修改数据&#xff0c;而是把数据复制出来一份&#xff0c;对复制出来的数组进行操作。 通过这样的机制&#…

【图像算法】马赛克识别

【目的】 校验视频中出现马赛克的频率&#xff0c;抽象成将视频切割成图片&#xff0c;对每张代测图片进行自动化验证。 【实现】 图像边缘检测算法识别 算法步骤&#xff1a; 使用高斯滤波器&#xff0c;以平滑图像&#xff0c;滤除噪声。计算图像中每个像素点的梯度强度和…

buuctf-web-[BJDCTF2020]Easy MD51

打开环境一个简单的页面查看源代码一个get传参&#xff0c;随便输入试试看输入1,1",1,均无反应&#xff0c;每次遇到这种有输入框的都以为是sql注入&#xff0c;但是题目为md5标头里面看到提示select * from admin where passwordmd5($pass,true)搜索相关漏洞&#xff0c;…

gost 常用tunnel配置示例(隧道模式)

gost是用golang语言实现的一个安全隧道。地址位于&#xff1a;https://github.com/ginuerzh/gost是一个不可多得的隧道工具。至于什么是隧道&#xff1f; 就是可以通过这个工具传输一些其他协议的数据。就像这个样子。隧道有什么用呢&#xff1f;可以起到一些加速的作用或者流量…

Array.prototype.from()

Array.from() 用于将类数组对象或可迭代对象转化为一个新的浅拷贝数组实例。 let arr Array.from({length:3},(_,i)>({id:item-${i1}}))console.log(arr)Array.from()转换数组 // Array.from 转换成数组let arr2 Array.from(chixinAwen)console.log(arr2) 示例&#xff1a…