C++语言程序设计——02 变量与数据类型

目录

  • 一、变量与数据类型
    • (一)变量的数据类型
    • (二)变量命名规则
    • (三)定义变量
    • (四)变量赋值
    • (五)查看数据类型
    • (六)数据类型的字节长度
    • (七)sizeof运算符
  • 二、进制表示与转换
    • (一)不同进制表示
    • (二)进制转换方法
  • 三、ASCII码

一、变量与数据类型

(一)变量的数据类型

类型特点
int整数类型(整型)
long long长整型
short短整型
float单精度浮点型
double双精度浮点型
char单字符/小整数类型
string字符串类型
bool布尔值类型
void无类型

一般来说,可以直接使用字符串类型string不用加头文件< string >,因为有的编译器< iostream >中通常包含,不过有的旧版本编译器不一定包含,可能报错无法编译成功:

#include <string>

总结一下,上面的数据类型中,int就是整数,float和double就是小数,而string是字符串(中文、英文、符号等),同时要注意float和double的区别。

类型特点精度占用空间
float单精度浮点型6~7位小数4字节(byte)
double双精度浮点型15-16位小数8字节(byte)

(二)变量命名规则

变量可以比作一个盒子,可以装数据,同时它也有一个名字,即变量名。但是,变量的命名有一个严格的规则,如下:

① 变量名称不能是c++中的关键字、标准库函数,例如,if、else、true、false等。
② 变量名称可以由英文字母、数字及下划线(_)组成,但不能以数字开头。
③ 严格遵循大小写。

(三)定义变量

1、定义一个变量:
根据刚刚学到的变量数据类型,我们知道,在定义变量时候要首先定义变量的类型,然后再写上变量的名字,定义变量的具体方法如下:

数据类型 变量名字;               //不要忘记英文冒号了!!

2、定义多个变量:
也可以一次定义多个变量,通过英文逗号隔开就好,要注意这样定义的变量是属于同一个数据类型的,如下格式:

数据类型 变量名字1,变量名字2,……;               //不要忘记英文冒号了!!

3、定义变量的区间:
另外,这里要注意一下,定义变量应该在哪里定义?因为在主函数int main()里面定义和其他地方定义的意思是不一样的。

【一句话总结,例如,自己家的电脑和外面网吧的电脑】
在主函数外面定义的变量就是外面网吧的电脑,其他人都可以使用,是公共的,其他人(所有函数)都可以使用。
在这里插入图片描述
在主函数里面定义的变量就是自己家的电脑,是我的电脑,只有我(主函数里面的代码)才能使用,其他人用该电脑无法打游戏。
在这里插入图片描述

(四)变量赋值

一定要注意,先定义函数,然后再赋值!不过也可以将定义和赋值一起写,简化一下,赋值是通过在变量名字后面写一个等于号,然后后面写内容。赋值操作并不会改变变量的数据类型。

#include<iostream>
using namespace std;int main()
{int a;a = 1;int A = 2;cout << a << endl;cout << A;return 0;
}

运行结果如下:
在这里插入图片描述
可以一次性定义多个同类型的变量,也可以一次性cout输出几个变量,如下:

#include<iostream>
using namespace std;int main()
{int a=1,b=2,c=3,d=4;cout << a << b << c << d;return 0;
}

运行结果如下:
在这里插入图片描述
可以实现一个简单的两个整数相加计算器功能,如下:

#include<iostream>
using namespace std;int main()
{int a=1,b=2,c;cout << "a+b的结果是:\n"<< a + b ;return 0;
}

运行结果如下:
在这里插入图片描述
也可以定义变量来输出字符串,不过记得要加头文件< cstring >,如下:

#include<iostream>
#include<cstring>
using namespace std;int main()
{int a = 1;float b = 2.566666;string c = "今天是2025/3/30 !";cout << "a和b的值是:" << a << "\n" << b << endl;cout << c;return 0;
}

运行结果如下:
在这里插入图片描述

(五)查看数据类型

如果我们需要查看我们创建变量的数据类型,就需要先导入头文件< typeinfo >,然后通过typeid().name()来查看,typeid()括号里面写变量的名称。例如,下面代码,定义了七个数据类型,通过该方法查看并cout输出:

#include<iostream>
#include<cstring>
#include <typeinfo>
using namespace std;int main()
{int a = 1;long long b = 6666666666;float c = 0.2;double d = 0.00000000003;char e = 'A';string f = "今天是2025年3月30日!";bool g = true;cout << "a的类型是:" << typeid(a).name() << "\n";cout << "b的类型是:" << typeid(b).name() << "\n";cout << "c的类型是:" << typeid(c).name() << "\n";cout << "d的类型是:" << typeid(d).name() << "\n";cout << "e的类型是:" << typeid(e).name() << "\n";cout << "f的类型是:" << typeid(f).name() << "\n";cout << "g的类型是:" << typeid(g).name() << "\n";return 0;
}

运行结果如下:
在这里插入图片描述
所以这里,我们可以总结一下通过typeid().name()所得到的数据类型:

类型特点名称
int整数类型(整型)i
bool布尔值类型b
char字符串类型c
long long长整型x
float单精度浮点型f
double双精度浮点型d
string字符串类型Ss

(六)数据类型的字节长度

数据类型是以字节(Byte)为单位来存储的。

名称表示
bit
字节Byte
固定字长8位、16位、32位、64位等
机器字长32位、64位等

常用的基本数据类型的长度如下表:

类型特点长度(Byte)
bool布尔值类型1B
char单字符/小整数类型1B
short短整数类型2B
int整数类型(整型)4B
float单精度浮点型4B
long long长整型8B
double双精度浮点型8B

(七)sizeof运算符

sizeof运算符用于计算某种类型在计算机内存中所占的字节数(字节长度),例如:

#include<iostream>
using namespace std;
int main()
{bool a;short b;int c;double d;cin >> a >> b >> c >> d;    cout << "a的值为:" << sizeof(a) << endl;cout << "b的值为:" << sizeof(b) << endl;cout << "c的值为:" << sizeof(c) << endl;cout << "d的值为:" << sizeof(d) << endl;return 0;
}

运行结果如下:
在这里插入图片描述

二、进制表示与转换

一般有以下常见的进制表示,例如,二进制、八进制、十进制和十六进制。要注意是从0开始,可以简单描述为逢X进1(X为2、8、10、16),如下表:

类型写法
二进制0、1
八进制0、1、2、3、4、5、6、7
十进制0、1、2、3、4、5、6、7、8、9
十六进制0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F

尤其要注意十六进制中,有一些是用大写英文字母代替的,如下:

十六进制表示对应数字
A10
B11
C12
D13
E14
F15

(一)不同进制表示

我们数学默认是十进制(逢十进一)表示,而计算机是采用二进制的,如果我们想在c++中表示其他进制,需要在数字前添加别的东西,才能表示该进制的写法。例如,以15为例子,如下:

类型写法备注
十进制15无前缀
八进制017加前缀【0
二进制0b1111加前缀【0b
十六进制0xF加前缀【0x

(二)进制转换方法

1、输出为十进制
输出为十进制是通过控制符dec(decimalism,十进制)来实现的,例如以下代码:

#include<iostream>
using namespace std;int main()
{cout << "017八进制转十进制输出:" << dec << 017 << endl;cout << "0b1111二进制转十进制输出:" << dec << 0b1111 << endl;cout << "0xF十六进制转十进制输出:" << dec << 0xF << endl;return 0;
}

运行结果如下:
在这里插入图片描述
2、输出为八进制
输出为八进制是通过控制符oct(Octal Q,八进制)来实现的,例如以下代码:

#include<iostream>
using namespace std;int main()
{cout << "15十进制转八进制输出:" << oct << 15 << endl;cout << "0b1111二进制转八进制输出:" << oct << 0b1111 << endl;cout << "0xF十六进制转八进制输出:" << oct << 0xF << endl;return 0;
}

运行结果如下:
在这里插入图片描述
3、输出为十六进制
输出为八进制是通过控制符hex(hexadecimal,十六进制)来实现的,例如以下代码:

#include<iostream>
using namespace std;int main()
{cout << "15十进制转十六进制输出:" << hex << 15 << endl;cout << "0b1111二进制转十六进制输出:" << hex << 0b1111 << endl;cout << "017八进制转十六进制输出:" << hex << 017 << endl;return 0;
}

运行结果如下:
在这里插入图片描述
4、输出为二进制
输入二进制需要先导入一个 < bitset > 头文件,然后通过bitset来实现,如果是要转换为八位,即bitset<位数>(数字)。下面是示例代码:

#include<iostream>
#include<bitset> 
using namespace std;int main()
{cout << "15十进制转二进制输出:" << bitset<8>(15) << endl;cout << "017八进制转二进制输出:" << bitset<8>(017) << endl;cout << "0xF十六进制转二进制输出:" << bitset<8>(0xF) << endl;return 0;
}

运行结果如下:
在这里插入图片描述

三、ASCII码

对于计算机中非数值信息(字母、符号、控制字符等),它们也是通过二进制0和1进行编码来显示的,通常采用的是ASCII编码。简单的来说,ASCII码是计算机中的「字符字典」,相当于给每个常用的字母、符号等都编了号,从而让计算机能理解。因为,计算机只认识0和1(二进制),所以ASCII码可以帮我们把字母等变成二进制数字。

ASCII码一共定义了128个字符(后来扩展成256个),主要包含以下内容:
①英文字母(大小写)
②数字0~9
③标点符号(!@#¥%*等)
④控制字符(回车、换行等)
在这里插入图片描述
在c++中,我们使用char()int()进行显式类型转换,进行ASCII字符与对应编码值之间的转换,如下:

类型作用
int(数字)数字 → 字符
char(字符)字符 → 数字

例如,我们知道大写英文字母 A ,而它的ASCII码为65,就可以通过char()将数字转换为字符,同理,我们将字符 A 转换为对应的ASCII码,如下代码:

#include<iostream>
using namespace std;int main()
{int a = 100;char b = 'A';cout << "变量a对应的字符:" << char(a) << endl;cout << "变量b的ASCII码是:" << int(b);return 0;
}

运行结果如下:
在这里插入图片描述

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

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

相关文章

咋用fliki的AI生成各类视频?AI生成视频教程

最近想制作视频&#xff0c;多方考查了决定用fliki&#xff0c;于是订阅了一年试试&#xff0c;这个AI生成的视频效果来看真是不错&#xff0c;感兴趣的自己官网注册个账号体验一下就知道了。 fliki官网 Fliki生成视频教程 创建账户并登录 首先&#xff0c;访问fliki官网并注…

文章记单词 | 第32篇(六级)

一&#xff0c;单词释义 inferior [ɪnˈfɪəriə(r)] adj. 较差的&#xff1b;次的&#xff1b;下级的&#xff1b;n. 下属&#xff1b;次品joy [dʒɔɪ] n. 欢乐&#xff1b;喜悦&#xff1b;乐趣&#xff1b;乐事&#xff1b;v. 因… 而高兴resemble [rɪˈzembl] vt. 类…

windows上安装Jenkins

1. 下载windows版 jenkins安装包 2. 配置本地安全策略 在 Windows 11/10 上打开本地安全策略。 Secpol.msc 或本地安全策略编辑器是一个 Windows 管理工具&#xff0c;允许您在本地计算机上配置和管理与安全相关的策略。 安全设置-》本地策略-》用户权限分配-》作为服务登录…

dfs二叉树中的深搜(回溯、剪枝)--力扣129、814、230、257

目录 1.1题目链接&#xff1a;129.求根节点到叶结点数字之和 1.2题目描述&#xff1a;给你一个二叉树的根节点 root &#xff0c;树中每个节点都存放有一个 0 到 9 之间的数字。 1.3解法(dfs-前序遍历)&#xff1a; 2.1题目链接&#xff1a;814.二叉树剪枝 2.2题目描述&…

【树形dp题解】dfs的巧妙应用

【树形dp题解】dfs的巧妙应用 [P2986 USACO10MAR] Great Cow Gathering G - 洛谷 题目大意&#xff1a; Bessie 正在计划一年一度的奶牛大集会&#xff0c;来自全国各地的奶牛将来参加这一次集会。当然&#xff0c;她会选择最方便的地点来举办这次集会。 每个奶牛居住在 N N …

【c++深入系列】:new和delete运算符详解

&#x1f525; 本文专栏&#xff1a;c &#x1f338;作者主页&#xff1a;努力努力再努力wz &#x1f4aa; 今日博客励志语录&#xff1a; “生活不会向你许诺什么&#xff0c;尤其不会向你许诺成功。它只会给你挣扎、痛苦和煎熬的过程。但只要你坚持下去&#xff0c;终有一天&…

Spring Boot 实现防盗链

在 Spring Boot 项目中实现防盗链可以通过多种方式&#xff0c;下面为你介绍两种常见的实现方法&#xff0c;分别是基于请求头 Referer 和基于令牌&#xff08;Token&#xff09;的防盗链。 基于请求头 Referer 的防盗链 这种方法通过检查请求头中的 Referer 字段&#xff0c…

悄悄话识别、 打电话识别、攀高识别三种识别算法

在摄像头正对场景下,悄悄话识别(唇语识别)、打电话识别和攀高识别是三种典型的行为检测技术。以下从技术原理、算法模型、应用场景及挑战等方面进行详细分析: 一、悄悄话识别(唇语识别) 技术原理 唇语识别通过分析嘴唇的几何特征(形状、开合程度、运动轨迹)和动态变化…

centos部署的openstack发布windows虚拟机

‌CentOS上部署的OpenStack可以发布Windows虚拟机‌。在CentOS上部署OpenStack后&#xff0c;可以通过OpenStack平台创建和管理Windows虚拟机。以下是具体的步骤和注意事项&#xff1a; ‌安装和配置OpenStack‌&#xff1a; 首先&#xff0c;确保系统满足OpenStack的最低硬件…

【电子通识】案例:电缆的安装方式也会影响设备的可靠性?

背景 在日常生活中&#xff0c;我们常常会忽略一些看似微不足道的细节&#xff0c;但这些细节有时却能决定设备的寿命和安全性。比如&#xff0c;你知道吗&#xff1f;一根电缆的布置方式&#xff0c;可能会决定你的设备是否会因为冷凝水而损坏。 今天&#xff0c;我们就来聊聊…

【Web APIs】JavaScript 操作多个元素 ④ ( 表格全选复选框案例 )

文章目录 一、核心要点解析 - 表格全选复选框案例1、案例需求2、复选框设置3、获取 全选复选框 和 普通复选框4、设置 全选复选框 逻辑5、设置 普通复选框 逻辑 二、完整代码示例1、代码示例2、执行结果 一、核心要点解析 - 表格全选复选框案例 1、案例需求 在表格中 , 设置 多…

OpenAI发布GPT-4.1系列模型——开发者可免费使用

OpenAI刚刚推出GPT-4.1模型家族&#xff0c;包含GPT-4.1、GPT-4.1 Mini和GPT-4.1 Nano三款模型。重点是——现在全部免费开放&#xff01; 虽然技术升级值得关注&#xff0c;但真正具有变革意义的是开发者能通过Cursor、Windsurf和GitHub Copilot等平台立即免费调用这些模型。…

《重构全球贸易体系用户指南》解读

文章目录 背景核心矛盾与理论框架美元的“特里芬难题”核心矛盾目标理论框架 政策工具箱的协同运作机制关税体系的精准打击汇率政策的混合干预安全工具的复合运用 实施路径与全球秩序重构阶段性目标 风险传导与反制效应内部失衡加剧外部反制升级系统性风险 范式突破与理论再思考…

磁盘清理-C盘

0.采用的工具——WizTree&#xff08;一定要以管理员身份运行&#xff09; 没有以管理员身份运行时&#xff1a; 以管理员身份运行&#xff1a;&#xff08;查出很多之前没有查出的文件&#xff09; 1.该死的优酷&#xff01;缓存占我11个G的内存 2.C 盘 Dell 文件夹下的 SARe…

锚定“体验驱动”,锐捷EDN让园区网络“以人为本”

作者 | 曾响铃 文 | 响铃说 传统的网络升级路径&#xff0c;一如巴别塔的建造思路一般——工程师们按技术蓝图逐层堆砌&#xff0c;却常与地面用户的实际需求渐行渐远&#xff0c;从而带来了诸多体验痛点&#xff0c;如手工配置效率低下、关键业务用网无法保障、网络架构趋于…

pid_t

用最简单的方式解释&#xff1a; pid_t 就像是一个"专门用来装进程号码的盒子"。 实际本质&#xff1a; 这个盒子里面装的是整数&#xff08;就像 int&#xff09;但给它贴了专用标签&#xff0c;标明"只能装进程ID" 为什么不用普通int&#xff1a; 就像…

如何处理Python爬取视频时的反爬机制?

文章目录 前言1. IP 封禁2. 验证码3. 用户代理&#xff08;User-Agent&#xff09;检测4. 动态内容加载5. 加密和签名验证 前言 在使用 Python 爬取视频时&#xff0c;网站可能会设置多种反爬机制来阻止爬虫&#xff0c;下面为你介绍一些常见反爬机制及对应的处理方法&#xf…

如何利用GM DC Monitor快速监控一台网络类设备

GM DC Monitor v2.0在网络类设备监控的效率非常高&#xff01; 如果您需要管理运维大量的网络类设备&#xff0c;GM DC Monitor是个不错的选择。 如果您具备一定的采集脚本编写能力&#xff0c;可以在平台的定制属于自己的监控模板&#xff01; 1&#xff09;首先建立数据中…

特殊文件以及日志——特殊文件

一、特殊文件 必要性&#xff1a;可以用于存储多个用户的&#xff1a;用户名、密码。这些有关系的数据都可以用特殊文件来存储&#xff0c;然后作为信息进行传输。 1. 属性文件.properties&#xff08;键值对&#xff09; &#xff08;1&#xff09;特点&#xff1a; 都只能…

基于AD9767高速DAC的DDS信号发生器

DDS信号发生器原理 DDS控制信号发生原理图 DDS主要由相位累加器、相位调制器、波形数据表以及D/A转换器构成。其中相位累加器由N位加法器与N位寄存器构成。每个时钟周期的时钟上升沿,加法器就将频率控制字与累加寄存器输出的相位数据相加,相加的结果又反馈至累加寄存…