P2 C++变量

前言

一 C++变量的作用

本期我们来讨论一下c ++中的变量。

在一个 C++ 程序中,大部分内容实际上都是在使用数据。我们操作任何类型的数据,如包括我们想要改变、想要修改, 想要读和写数据。我们都需要把数据存储进叫做变量的东西里面。变量允许我们命名我们存储在内存中的数据。

1.1 举个例子变量的栗子

假设你正在制作一款游戏,角色在地图上有某种位置,角色可以移动,所以我们需要能够存储角色的位置,把角色放在屏幕上,这样角色才能与关卡的其他部分互动,我们也可以看到角色到底在哪里,我们想要用一个变量存储角色位置。

这是写所有程序的最基本的,无论任何编程语言,我们需要能够利用数据。将数据存储在某个地方。


 二 数据类型 

  2.1 常用的数据类型

当我们创建一个变量时,它将被存储在内存中的两个地方,堆和栈,那是我们实际存储数据的地方,我们有一堆原始数据类型,这些数据类型基本上构成了我们在程序中存的任何数据。

每种数据类型都有特定的用途,虽然它有特定的目的,实际上你也不一定就是用于这个目的,这意味着当你实际上做事的时候实很少有固定的规则。

类型关键字
布尔型bool
字符型char
整型int
浮点型float
双浮点型double
无类型void

不同变量类型之间的唯一区别,是这个类型数据在C++中这个变量会占用多少内存,这实际上是这些类型之间的唯一区别。 

2.2 unsigned的作用

int 类型可以存储介于 -20 亿到 +20 亿的值,所以你可能会说,为什么 -20 亿与 +20 亿?确切地说不是20亿,大概是 20 亿多点,这些限制从何而来,它们有意义吗,他们是有意义的。变量的类型大小与它能存储多大的数字直接相关,一个整数是 4 个字节,我们可以在这个范围内存储数字。让我们来具体分析一下。

一个字节是 8 比特的数据,这意味着 4 个字节是32位的数据,因为这个变量有符号,这意味着它可以是负的,它包含一个像负号一样的符号,因为这个变量有符号,这32 位中的一位表示符号,这样我们就知道了它是正的还是负的。实际数字只剩下 31 位。一个比特可以是0或者1,我们就还有31比特,2的31次方是多少? 2147483648,大概 21 亿。这21 亿是我们得到的能用 int 类型存储的最大值,记住,我们还有一个预留位,看这个数是否为负数,因此,这个数可以是从0到21亿的正值,从 -21 亿开始的负值。

但如果你不想要负值。有没有什么方法把这 1 个符号位去掉,然后把它作为数字的一部分?当然有的。就是我们所说的无符号数,unsigned number 。这意味着它是一个没有符号的数,它总是正值。 在 C++ 中我们可以在 int 前面输入 unsigned 来实现。 您还可以将 unsigned 添加到其中任意一种类型前,它会移除符号位,可以让你设置为一个更大的数字。

#include <iostream>
using namespace std;
 
// main() 是程序开始执行的地方
 
int main()
{
   unsigned int variable = 8;
   cout << "输出 Hello World"<< endl; // 输出 Hello World
   return 0;
}

2.3 char代表字符

为什么说 Char 是专门用来代表字符的?

举个例子,定义个char类型的变量data并赋值为65,按道理来说应该会打印65,但事实上并不是这样,看以下代码

#include <iostream>
using namespace std;
 
// main() 是程序开始执行的地方
 
int main()
{
   char  data  = 65;
   cout <<  data<< endl; 
   return 0;
}

 

打印结果是字符A ,但如果我将变量类型换为整形呢?然后给给整形变量赋值为'A'

#include <iostream>
using namespace std;
 
// main() 是程序开始执行的地方
 
int main()
{
   int  data  = 'A';
   cout <<  data<< endl; 
   return 0;
}

 结果打印的结果为65,而不是A

它会打印出数值,因为 cout 会把它当作一个int 类型。即使是将 'A'修改为 其他字符 ,也是一样的,可以试一下。

讲解这些是因为,我想让你们理解数据类型的使用取决于程序员,我们有一些既定的约定,但是却没有具体的东西需要你去遵循,在 C++中没有太多规则限制你,正因为如此, 我希望你们能意识到,这是这些数据类型之间唯一的区别,就是创建变量时通过数据类型将分配多少内存。

2.4 sizeof

我们说了那么多 size 大小和 bytes 字节,以及每个类型多大, 占据多少内存,我们如何知道一个数据究竟多大呢?毕竟,它依赖于编译器。有什么地方可以查一下吗,是的,我们有个操作符,在C++中使用 sizeof 操作符。

可以看到int类型 占了四个字节的内存,其他的变量类型也可以这样使用

后话:写这文章的时候不会全部的基础知识全部都写出来,网络上已经有很多教程,所有我才写了一些我比较容易忘记的和第一次见的

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Github搜索技巧

文章目录 1 普通搜索2 高级搜索技巧3 github advance查找工具 1 普通搜索 我们一般在github搜索项目&#xff0c;都是直接在根据仓库关键字搜索项目&#xff0c;可能还会用到图中的匹配条件进行筛选。 这样虽然能实现我们的大部分需求&#xff0c;但还不足实现精确查找。而git…

SpringCloud实用篇02

SpringCloud实用篇02 0.学习目标 1.Nacos配置管理 Nacos除了可以做注册中心&#xff0c;同样可以做配置管理来使用。 1.1.统一配置管理 当微服务部署的实例越来越多&#xff0c;达到数十、数百时&#xff0c;逐个修改微服务配置就会让人抓狂&#xff0c;而且很容易出错。我…

卷积神经网络(ResNet-50)鸟类识别

文章目录 卷积神经网络&#xff08;CNN&#xff09;mnist手写数字分类识别的实现卷积神经网络&#xff08;CNN&#xff09;多种图片分类的实现卷积神经网络&#xff08;CNN&#xff09;衣服图像分类的实现卷积神经网络&#xff08;CNN&#xff09;鲜花的识别卷积神经网络&#…

提升--09-1--AQS底层逻辑实现

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 一、怎么解释AQS是什么&#xff1f;AQS的本质是JUC包下一个抽象类&#xff0c;AbstractQueuedSynchronizer &#xff08;抽象的队列式同步器&#xff09; 二、AQS核…

Flowable工作流高级篇

文章目录 一、任务分配和流程变量1.任务分配1.1 固定分配1.2 表达式分配1.2.1 值表达式1.2.2 方法表达式 1.3 监听器分配 2.流程变量2.1 全局变量2.2 局部变量2.3 案例讲解 二、候选人和候选人组1.候选人1.1 定义流程图1.2 部署和启动流程实例1.3 任务的查询1.4 任务的拾取1.5 …

STM32:时钟树原理概要

在一般情况下只要在CubeIDE中将RCC下的高速时钟源设置成晶振&#xff0c;随后在时钟配置中把HCLK设置到最大频率&#xff08;比如STM32F103的最高频率是72MHZ &#xff09;&#xff0c;CubeIDE就会帮我们自动调节其它参数到合适的值。这样我们芯片就可以全速运行了。 一、时钟信…

【20年扬大真题】设顺序表va中的数据元素递增有序。试写一算法,将x插入到顺序表的适当位置上,以保障该表的有序性。

【20年扬大真题】 设顺序表va中的数据元素递增有序。 试写一算法&#xff0c;将x插入到顺序表的适当位置上&#xff0c;以保障该表的有序性。 #define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<malloc.h> #define MaxSize 9//定义最大长度 int InitAr…

俄罗斯网络间谍组织在有针对性的攻击中部署LitterDrifter USB蠕虫

导语 俄罗斯网络间谍组织最近在针对乌克兰实体的攻击中&#xff0c;部署了一种名为LitterDrifter的USB蠕虫。这种蠕虫具有自动传播恶意软件的功能&#xff0c;并与威胁行为者的命令和控制服务器进行通信。该组织被称为Gamaredon&#xff0c;其攻击行动被认为是大规模的&#xf…

探寻欧洲市场的机遇:深度剖析欧洲跨境电商

随着全球化的不断推进&#xff0c;欧洲作为一个经济发达、多元文化共存的大陆&#xff0c;成为跨境电商发展的重要目标。本文将深入剖析欧洲跨境电商的机遇&#xff0c;分析欧洲市场的特点、挑战与前景&#xff0c;为企业提供在这个充满潜力的市场中蓬勃发展的指导。 欧洲市场的…

ArcGIS教程——ArcGIS工具-按线分割面

功能说明 在ArcGIS数据处理过程中&#xff0c;有时需要沿线把面要素分割开&#xff0c;可以使用高级编辑中的分割面&#xff08;Cut Polygon&#xff09;工具。那么&#xff0c;如果要用线图层分割面图层该怎么办呢&#xff1f;地理遥感生态网平台开发了一个自定义模型工具。它…

【cpolar】TortoiseSVN如何安装并实现公网提交文件到本地SVN服务器

&#x1f3a5; 个人主页&#xff1a;深鱼~ &#x1f525;收录专栏&#xff1a;cpolar &#x1f304;欢迎 &#x1f44d;点赞✍评论⭐收藏 文章目录 前言1. TortoiseSVN 客户端下载安装2. 创建检出文件夹3. 创建与提交文件4. 公网访问测试 前言 TortoiseSVN是一个开源的版本控…

MySQL InnoDB 引擎底层解析(三)

6.3.3. InnoDB 的内存结构总结 InnoDB 的内存结构和磁盘存储结构图总结如下&#xff1a; 其中的 Insert/Change Buffer 主要是用于对二级索引的写入优化&#xff0c;Undo 空间则是 undo 日志一般放在系统表空间&#xff0c;但是通过参数配置后&#xff0c;也可以用独立表空 间…

初识linux(1)

文章目录 什么是linux什么是操作系统&#xff1f;开源 怎么装linux的环境基础指令lspwdcdtouchmkdirrmdir与rmmancpmv 什么是linux linux是一款开源操作系统 什么是操作系统&#xff1f; 操作系统&#xff1a;一种对计算机所有计算机软硬件进行控制和管理的系统软件 开源 开源&…

2023年中国AI基础设施行业发展趋势分析:AI基础设施将保持高速增长[图]

从产品形态来看&#xff0c;AI基础设施可划分为AI基础硬件和基础软件两大类。而在AI生态系统中&#xff0c;通用型和定制型AI基础设施的相互依赖性促进了广泛的AI技术应用&#xff0c;也为各行业的持续发展提供了关键支持。 AI基础设施分类 资料来源&#xff1a;共研产业咨询&…

一文详解!SRM(供应商管理)助力实现采购端实现降本增效

供应商管理关系到企业各部门的正常运转&#xff0c;一个好的SRM供应商管理系统对于公司来说无疑是锦上添花&#xff0c;改善企业与供应商的关系&#xff0c;可以帮助企业实现采购端的降本增效。但在信息化转型的浪潮下&#xff0c;很多企业SRM信息化却遇到不少问题。 那么请花…

云计算:开辟数字时代的无限可能

云计算是一项革命性的技术&#xff0c;为企业和个人提供了灵活、可扩展和高效的计算资源。本文将介绍云计算的概念、架构和优势&#xff0c;并探讨其在数字化时代的重要性和未来发展趋势。 引言 随着信息技术的日新月异和数字化转型的浪潮席卷全球&#xff0c;云计算作为一种颠…

分布式系统的认证授权

一.分布式系统的认证授权大致架构 以云音乐系统为例&#xff1a; 注&#xff1a;一般情况下&#xff0c;我们会把认证的部分的接口提取为一个单独的认证服务模块中。 二.单点登录&#xff08;Single Sign On&#xff09; 单点登录&#xff0c;Single Sign On&#xff0c;简称…

OpenGL_Learn15(投光物)

1. 平行光 cube.vs******************#version 330 core layout (location 0) in vec3 aPos; layout (location 1 ) in vec3 aNormal; layout (location2) in vec2 aTexCoords;out vec3 FragPos; out vec3 Normal; out vec2 TexCoords;uniform mat4 model; uniform mat4 view…

初识树(c语言)

树 定义&#xff1a;树是一种非线性的数据结构&#xff0c;它是由n&#xff08;n>0&#xff09;个有限结点组成一个具有层次关系的集合。 有一个特殊的结点&#xff0c;称为根结点&#xff0c;根节点没有前驱结点 除根节点外&#xff0c;其余结点被分成M(M>0)个互不相交…

如何在3dMax中使用Python返回场景内所有对象的列表?

如何在3dMax中使用Python返回场景内所有对象的列表&#xff1f; 3dMax支持开发基于Python的工具和扩展&#xff0c;因此可以对其进行自定义并将其集成到现代数字内容创建管道中。为此&#xff0c;3dMax集成了Python 3.9解释器&#xff0c;并通过pymxs API公开了3dMax的丰富功能…