Variables in C++

Variables in C++

C++中的变量


变量

当我们用C++编写程序时,我们希望能够使用数据,编程的大部分内容实际上是使用数据。我们要做的就是处理我们的数据。我们想要修改从中读取和写入的数据,需要将这些数据存储在称为变量的东西中。

变量允许我们命名存储在内存中的一段数据,以便我们可以继续使用它。举个例子,假设你正在制作一个游戏,你的游戏中有一个玩家,并且该玩家角色在地图上具有相同的位置,并且玩家角色可以移动,因此我们需要能够将玩家位置存储为内存中的某种变量。当需要在屏幕上绘制玩家时,我们实际上可以看到玩家到底在哪里,所以我们想要将玩家的位置存储在一个变量中,这基本上是一个基础或用任何语言编写程序。

我们需要能够处理数据并将该数据存储在某个地方,当我们创建一个变量时,它将存储在堆栈或堆的两个位置之一的内存中,我们将在后面讨论内存的实际工作原理,现在只知道变量确实占用了内存,这就是我们实际的地方将数据存储在我们计算机的内存中。

数据类型

在C++被赋予了一堆原始数据类型,这些原始数据类型基本上形成了我们存储在程序中的任何类型的数据的构建。C++给我们的每个数据类型都有一个特定的用途,因为如果C ++是一种非常强大的语言。我想说的是,实际上您在C++中的不同变量类型之间的唯一区别是大小。当涉及到这个变量时,这个变量占用多少内存,这些原始数据类型之间的唯一区别是它们有多大。

整型

我们实际上已经有一个变量类型,我们在这里使用 int 代表整数类型,它让我们在给定范围内存储一个整数,如果我们想声明一个全新的变量,我们可以通过变量的类型来做到这一点,给它某种名称,例如variable,然后给它一个值现在这最后一部分是可选的。您不必立即给它一个值,但现在让我们只给它一个值 8 。int是4个字节大的数据类型,数据类型的实际大小取决于编译器,因此可能会有所不同,具体取决于您使用的编译器

int variable = 8;  //= 8 是可选的  -2b-> 2b

最终是编译器的选择告诉你的数据有多大,int数据类型是为了存储一定范围内的整数,因为它是四个字节大,所以我们限制了我们可以用它存储什么样的数字。具体来说,这是一个叫做有符号整数的东西,它可以存储大约负 20 亿到正 20 亿的值,任何大于或小于此值的值都需要比这个 int 实际支持的更多的数据来存储。因此,对于 4 字节的数据,我们可以在范围之间存储一个值。

我们可以继续修改我们的变量,将他分配给其他值,例如20

variable = 20;

你可能会说为什么是负20亿和正20亿,顺便说一下,它不完全是20亿。这些限制从何而来,它们是否有意义,答案是肯定的,它们与变量的大小直接相关,即允许在其中存储多少数据,一个整数是 4 个字节,其中 4 个字节的数据我们可以在该范围内存储值。让我们稍微分解一下,所以一个字节是 8 位数据,这意味着 4 个字节是 32 位数据。因为这个变量是有符号的,这意味着它可以是负数,所以它包含一个像负号一样的符号,因为这个变量是有符号的。其中一个位 这 32 位中的一个必须用于符号,以便我们知道它是正数还是负数,实际数字只剩下 31 位。

每一位可以是 0 或 1,因此 1位数据有 2 个可能的值,所以 2 的 31 次方是多少,我们将得到大约21亿,这是我们可以用整数存储的最大数字,现在请记住有一个位是为该数字是否为负数保留的。

因此,我们可以存储从 0 到该数字,但也可以采用另一种方式将所有负值存储到 2 乘以 10 亿,但我不想要负值,这就是我们所说的无符号数字,这意味着它是没有符号的数字,意思总是正数。

unsigned int variable= 8;

在C++中,其中一种方式我们可以通过在整数前面输入unsigned来表示。所以现在我们所做的是我们有 32 位。2的32次方是42.9亿,这基本上就是无符号关键字在C++让我们定义一个没有符号位的整数。

char,short,int,long,long long

那么我们还有哪些其他数据类型可供我们使用,就整数值而言,char类型这是一个字节的数据,short这是两个字节的数据, int 这是四个字节的数据,long类型通常也是四个字节的数据取决于编译器,long long 类型通常是八个字节的数据,基本的是这五个。您还可以在其中任何一个中添加unsigned,并且可以很好地删除该符号位并让您设置更大的数字。

char a = 'A';

char 传统上也用于存储字符而不仅仅是数字,所以上面我给它分配数字,比如 50,你也可以给它分配字符,比如字母A,字母 A也是是一个数字,与该字符相关联的数值的那个数字字符 A是 65。

现在,如果数字只是字符,如果字符只是数字,那么为什么我们究竟有这种区别?为什么我说char专门用于字符,而实际上不是。那是因为我们作为程序员经常对某些数据类型做出假设,如果我传入一个字符并称它为类似字符的东西我通常希望你实际为它分配一个字符。

char a = 65;

我把字符a打印到控制台显示的是A 。如果我用实际的数值(如 65)替换它,我也会得到打印出来的值也是A。如果我将字符传递到 cout 中,它会将其视为一个字符而不是数字。如果把a 的类型改为short ,输出的是65,再把值为A,类型是short
,输出还是65。

short a = 65;
//short a = 'A'
都是输出65

所以我之所以会告诉你这一切,是因为我想让你明白数据类型的用法真的取决于程序员。我们有某些约定,但注意到你必须实际遵循的具体规则和C++毕竟很少,所以正因为如此,我确实希望你意识到这些数据类型之间唯一真正的区别是当你创建一个具有该数据类型的变量时将分配多少内存。

浮点型

所以除了这些整数类型之外,如果我想存储一个十进制值,例如5.5,我该怎么做,我们有float,我们有double,还有一些修改,你可以做,比如long double。

float variable = 5.5;

float 是一个十进制值,我们可以存储它占用四个字节的数据 。你可能认为你已经定义了一个浮点数,但实际上你并没有真正定义一个双精度,如果我们回到Visual Studio并将鼠标悬停在这个值上,你可以看到括号里写着double。
在这里插入图片描述
正如我刚才提到的,我们有两个不同的变量可以用来存储十进制数float和double,那么我们如何辨别什么是double和什么float。我们可以在float变量后面添加一个f,它可以是小写或大写无关紧要。float占据4字节大小,double占据8字节。

布尔型

我们还有一个原始数据类型可以使用,那就是bool,bool是布尔值,它可以是true或者false。

bool variable = true;

将variable 打印出来的得到的是1,没有true或false这样的东西,这些是英语单词,计算机是处理数字的,所以基本上零意味着假,除了零之外的任何其他数字都意味着真true。bool类型占据1个字节大小

现在你可能想知道一个字节的布尔值可以是真的或假的,当然只需要一个位来表示,你是对的,它确实需要一位来表示。
但是,当我们处理寻址内存时,即从内存中检索布尔值或存储在内存中,我们无法实际寻址单个bit,我们只能寻址字节,因此我们实际上无法创建一个bit类型,我们无法访问bit变量,我们只能访问字节变量。另一方面,您可以做的一件事是非常聪明地存储数据并在一个字节中存储八个布尔值,这是完全可以的。每个布尔值一位,但你仍然有一个字节的内存分配。

布尔值是内存的一个字节,所以所有这些关于大小和字节的讨论以及所有东西需要多少,我们如何实际知道数据类型有多大取决于编译器,毕竟有没有我们可以检查的地方是的,是的,有一个运算符可供我们使用,C++称为 sizeof。

std::cout << sizeof(bool) << std::endl; //1
std::cout << sizeof(int) << std::endl; //4
std::cout << sizeof(double) << std::endl;//8

这基本上就是变量的全部内容,或者至少是我介绍过的原始类型,您可以在C++中创建许多不同的类型,并且已经为您创建了,但是它们都是基于这些原始类型的自定义类型。 这些是我们用来定义和存储我们可能创建的任何类型的数据的构建块

指针类型

bool* variable;
bool& variable;

现在,对于这些原始数据类型中的任何一种,我们也能够将它们转换为指针或引用,可以通过在类型旁边写一个*来声明指针,就像这样,在你的类型旁边用 & 符号引用来声明。指针和引用是比较复杂和重要的主题,后面会涉及。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值