飞道的博客

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

361人阅读  评论(0)

🍿本文主题: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个字节组成,其他如表:
类型 大小(字节)
char 1
double 8
float 4
long 8
bool 1

我们可以通过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

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

结语

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


转载:https://blog.csdn.net/m0_73209194/article/details/128788967
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场