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 Worldreturn 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类型 占了四个字节的内存,其他的变量类型也可以这样使用

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

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

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

相关文章

Activiti,Apache camel,Netflex conductor对比,业务选型

Activiti,Apache camel,Netflex conductor对比&#xff0c;业务选型 1.activiti是审批流&#xff0c;主要应用于人->系统交互&#xff0c;典型应用场景&#xff1a;请假&#xff0c;离职等审批 详情可见【精选】activti实际使用_activiti通过事件监听器实现的优势_记录点滴…

【开发流程】持续集成、持续交付、持续部署

一、开发工作流程 假设把开发流程分为以下几个阶段&#xff1a; 编码 -> 构建 -> 集成 -> 测试 -> 交付 -> 部署 如上图所示&#xff0c;持续集成、持续交付、持续部署有着不同的软件自动交付周期。 二、持续集成、持续交付、持续部署 1、持续集成 持续集成…

mysql 查询

-- 多表查询select * from tb_dept,tb_emp; 内来链接 -- 内连接 -- A 查询员工的姓名 &#xff0c; 及所属的部门名称 &#xff08;隐式内连接实现&#xff09;select tb_emp.name,tb_dept.name from tb_emp,tb_dept where tb_emp.idtb_emp.id;-- 推荐使用select a.name,b.n…

SSL加密

小王学习录 今日摘录前言HTTP + SSL = HTTPSSSL加密1. 对称加密2. 非对称加密 + 对称加密3. 证书今日摘录 但愿四海无尘沙,有人卖酒仍卖花。 前言 SSL表示安全套接层,是一个用于保护计算机网络中数据传输安全的协议。SSL通过加密来防止第三方恶意截取并篡改数据。在实际应用…

GaussDB新特性Ustore存储引擎介绍

1、 Ustore和Astore存储引擎介绍 Ustore存储引擎&#xff0c;又名In-place Update存储引擎&#xff08;原地更新&#xff09;&#xff0c;是openGauss 内核新增的一种存储模式。此前的版本使用的行存储引擎是Append Update&#xff08;追加更新&#xff09;模式。相比于Append…

泉盛UV-K5/K6全功能中文固件

https://github.com/wu58430/uv-k5-firmware-chinese/releases 主要功能&#xff1a; 中文菜单 许多来自 OneOfEleven 的模块&#xff1a; AM 修复&#xff0c;显著提高接收质量长按按钮执行 F 操作的功能复制快速扫描菜单中的频道名称编辑频道名称 频率显示选项扫描列表分配…

Java入门篇 之 内部类

本篇碎碎念&#xff1a;本篇没有碎碎念&#xff0c;想分享一段话&#xff1a; 你不笨&#xff0c;你只是需要时间&#xff0c;耐心就是智慧&#xff0c;不见得快就好&#xff0c;如果方向都不对&#xff0c;如果心术不正&#xff0c;如果德不配位&#xff0c;快就是对自己天分的…

easyExcel注解详情

前言11个注解字段注解 类注解基础综合示例补充颜色总结 11个注解 ExcelProperty ColumnWith 列宽 ContentFontStyle 文本字体样式 ContentLoopMerge 文本合并 ContentRowHeight 文本行高度 ContentStyle 文本样式 HeadFontStyle 标题字体样式 HeadRowHeight 标题高度 HeadStyle…

8Base集团通过SmokeLoader部署新的Phobos勒索软件变种

最近&#xff0c;8Base集团的威胁行为者通过Phobos勒索软件的变种展开了一系列金融动机的攻击。这一发现来自于思科Talos的研究结果&#xff0c;他们记录了网络犯罪分子活动的增加。 安全研究员Guilherme Venere在周五发表的详尽的两部分分析中表示&#xff1a;“该组织的大多…

excel导入 Easy Excel

依旧是框架感觉有东西&#xff0c;但是确实是模拟不出来&#xff0c;各种零零散散的件太多了 controller层 ApiOperation(value "导入Excel", notes "导入Excel", httpMethod "POST", response ExcelResponseDTO.class)ApiImplicitParams({…

如何有效的禁止Google Chrome自动更新?

禁止Chrome自动更新 1、背景2、操作步骤 1、背景 众所周知&#xff0c;当我们在使用Selenium进行Web自动化操作&#xff08;如爬虫&#xff09;时&#xff0c;一般会用到ChromeDriver。然而Driver的更新速度明显跟不上Chrome的自动更新。导致我们在使用Selenium进行一些操作时就…

华为ac+fit无线2层漫游配置案例

ap的管理dhcp在ac上&#xff0c;业务dhcp在汇聚交换机上、并且带2层漫游 R1: interface GigabitEthernet0/0/0 ip address 11.1.1.1 255.255.255.0 ip route-static 12.2.2.0 255.255.255.0 11.1.1.2 ip route-static 192.168.0.0 255.255.0.0 11.1.1.2 lsw1: vlan batch 100…

鸿蒙系统扫盲(二):再谈鸿蒙是不是安卓套壳?

最近小米发布了澎湃OS&#xff0c;vivo发布了蓝OS&#xff0c;好像自从华为回归后&#xff0c;大伙都开始写自己的OS了&#xff0c;小米官方承认是套壳安卓&#xff0c;然后被大家喷了&#xff0c;于是鸿蒙是不是安卓套壳的话题又回到了大众的视野&#xff0c;今天在讨论下这个…

React函数组件状态Hook—useState《进阶-对象数组》

React函数组件状态-state 对象 state state 中可以保存任意类型的 JavaScript 值&#xff0c;包括对象。但是&#xff0c;你不应该直接修改存放在 React state 中的对象。相反&#xff0c;当你想要更新⼀个对象时&#xff0c;你需要创建⼀个新的对象&#xff08;或者将其拷⻉⼀…

VS+Qt+C++ Yolov8物体识别窗体程序onnx模型

程序示例精选 VSQtC Yolov8物体识别窗体程序onnx模型 如需安装运行环境或远程调试&#xff0c;见文章底部个人QQ名片&#xff0c;由专业技术人员远程协助&#xff01; 前言 这篇博客针对《VSQtC Yolov8物体识别窗体程序onnx模型》编写代码&#xff0c;代码整洁&#xff0c;规…

Spring接入Metric+Graphite+Grafana搭建监控系统

环境搭建 Metric 主要是记录操作记录&#xff0c;把数据传给Graphite&#xff0c;这个只需要引入依赖就可以了 日志收集系统&#xff0c;可以支持很多的监控系统一般在Spring项目中用其收集数据&#xff0c;可以发送到Graphite等监控系统中一般使用Merter和Timer分别记录成功…

多目标应用:基于非支配排序的蜣螂优化算法NSDBO求解微电网多目标优化调度(MATLAB)

一、微网系统运行优化模型 微电网优化模型介绍&#xff1a; 微电网多目标优化调度模型简介_IT猿手的博客-CSDN博客 二、基于非支配排序的蜣螂优化算法NSDBO 基于非支配排序的蜣螂优化算法NSDBO简介&#xff1a; https://blog.csdn.net/weixin46204734/article/details/128…

HTTPS流量抓包分析中出现无法加载key

HTTPS流量抓包分析(TLSv1.2)&#xff0c;这篇文章分析的比较透彻&#xff0c;就不班门弄斧了 https://zhuanlan.zhihu.com/p/635420027 写个小问题&#xff1a;RSA密钥对话框加载rsa key文件的时候注意不要在中文目录下&#xff0c;否则会提示&#xff1a;“Enter the passwor…

IDEA自动注解设置(中文版)

IDEA自动注解设置 1、添加类自动注释 文件 - 设置 - 编辑器 - 文件和代码模板 - Include - File Header /** *description&#xff1a;TODO *author&#xff1a; ${USER} *create&#xff1a; ${DATE} ${TIME} */2、添加类方法自动注释 文件 - 设置 - 编辑器 - 实时模版 - …

米哈游大数据云原生实践

云布道师 近年来&#xff0c;容器、微服务、Kubernetes 等各项云原生技术的日渐成熟&#xff0c;越来越多的公司开始选择拥抱云原生&#xff0c;并将企业应用部署运行在云原生之上。随着米哈游业务的高速发展&#xff0c;大数据离线数据存储量和计算任务量增长迅速&#xff0c…