C++语言程序设计——02 变量与数据类型
目录
- 一、变量与数据类型
- (一)变量的数据类型
- (二)变量命名规则
- (三)定义变量
- (四)变量赋值
- (五)查看数据类型
- 二、ASCII码
- 三、进制表示与转换
- (一)不同进制表示
- (二)进制转换方法
一、变量与数据类型
(一)变量的数据类型
| 类型 | 特点 |
|---|---|
| int | 整数类型(整型) |
| long long | 长整型 |
| 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 |
二、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;
}
运行结果如下:

三、进制表示与转换
(一)不同进制表示
一般我们用的默认是十进制(逢十进一),如果我们想表示其他进制
表示不同进制,需要在数字前添加别的东西,才能表示该进制的写法。例如,以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;
}
运行结果如下:

相关文章:
C++语言程序设计——02 变量与数据类型
目录 一、变量与数据类型(一)变量的数据类型(二)变量命名规则(三)定义变量(四)变量赋值(五)查看数据类型 二、ASCII码三、进制表示与转换(一&…...
Model Context Protocol (MCP) - 尝试创建和测试一下MCP Server
1.简单介绍 MCP是Model Context Protocol的缩写,是Anthropic开源的一个标准协议。MCP使得大语言模型可以和外部的数据源,工具进行集成。当前MCP在社区逐渐地流行起来了。同时official C# SDK(仓库是csharp-sdk) 也在不断更新中,目前最新版本…...
十四种逻辑器件综合对比——《器件手册--逻辑器件》
目录 逻辑器件 简述 按功能分类 按工艺分类 按电平分类 特殊功能逻辑器件 应用领域 详尽阐述 1 逻辑门 一、基本概念 二、主要类型 三、实现方式 四、应用领域 2 反相器 工作原理 基本功能 主要应用 常见类型 特点 未来发展趋势 3 锁存器 基本概念 工作原理 主要类型…...
将已有 SVN 服务打包成 Docker 镜像的详细步骤
将已有 SVN 服务打包成 Docker 镜像的详细步骤 一、服务器环境准备 在开始将 SVN 服务打包成 Docker 镜像之前,我们需要确保目标服务器的环境满足一定条件。 首先要确保目标服务器已安装 Docker。同时服务器可以连接互联网,可以通过以下简单命令来验证…...
python文件打包无法导入ultralytics模块
💥打包的 .exe 闪退了?别慌!教你逐步排查 PyInstaller 打包的所有错误! 🛠 运行 .exe 查看报错信息✅ 正确姿势: ⚠ importlib 动态导入导致打包失败❓什么是动态导入?✅ 解决方式: …...
AMBA-CHI协议详解(二十六)
AMBA-CHI协议详解(一)- Introduction AMBA-CHI协议详解(二)- Channel fields / Read transactions AMBA-CHI协议详解(三)- Write transactions AMBA-CHI协议详解(四)- Other transactions AMBA-CHI协议详解(五)- Transaction identifier fields AMBA-CHI协议详解(六…...
Go小技巧易错点100例(二十六)
本期分享: 1. string转[]byte是否会发生内存拷贝 2. Go程序获取文件的哈希值 正文: string转[]byte是否会发生内存拷贝 在Go语言中,字符串转换为字节数组([]byte)确实会发生内存拷贝。这是因为在Go中,字…...
FPGA_BD Block Design学习(一)
PS端开发流程详细步骤 1.第一步:打开Vivado软件,创建或打开一个工程。 2.第二步:在Block Design中添加arm核心,并将其配置为IP核。 3.第三步:配置arm核心的外设信息,如DDR接口、时钟频率、UART接口等。 …...
ubuntu20.04+qt5.12.8安装serialbus
先从官网https://download.qt.io/archive/qt/5.12/5.12.8/submodules/ 下载 qtserialbus-everywhere-src-5.12.8.tar.xz 有需要其他版本的点击返回上一级自行寻找对应版本。 也可从 https://download.csdn.net/download/zhouhui1982/90595810 下载 在终端中依次输入以下命令…...
银河麒麟V10 Ollama+ShellGPT打造Shell AI助手——筑梦之路
环境说明 1. 操作系统版本: 银河麒麟V10 2. CPU架构:X86 3. Python版本:3.12.9 4. 大模型:mistral:7b-instruct 准备工作 1. 编译安装python 3.12 # 下载python 源码wget https://www.python.org/ftp/python/3.12.9/Python-3.12.9.tg…...
python求π近似值
【问题描述】用公式π/4≈1-1/31/5-1/7..1/(2*N-1).求圆周率PI的近似值。 从键盘输入一个整数N值,利用上述公式计算出π的近似值,然后输出π值,保留小数后8位。 【样例输入】1000 【样例输出】3.14059265 def countpi(N):p0040nowid0for i i…...
基于 Spring Boot + Vue 的 [业务场景] 管理系统设计与实现
技术范围:SpringBoot、Vue、SSM、HLMT、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、小程序、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容:免费功能设计、开题报告、任务书、中期检查PPT、系统功能实现、代码编写、论文编写和辅导、论文…...
如何查看自己抖音的IP属地?详细教程+常见问题解答
在当今互联网时代,IP属地信息已成为各大社交平台(如抖音、微博、快手等)展示用户真实网络位置的重要功能。无论是出于隐私保护、账号安全,还是单纯好奇自己的IP归属地,了解如何查看抖音IP属地都很有必要。 本文将详细介…...
⑪数据中心网络M-LAG实战
一、DeviceA-M-LAG-Mater配置 1、M-LAG 系统配置。 # m-lag mad exclude interface GigabitEthernet1/0/7 m-lag mad exclude interface Vlan-interface100 m-lag mad exclude interface Vlan-interface101 m-lag system-mac 0002-0002-0002 m-lag system-number 1 m-la…...
化工企业数字化转型:从数据贯通到生态重构的实践路径
一、战略定位:破解行业核心痛点 化工行业面临生产安全风险高(全国危化品企业事故率年增5%)、能耗与排放压力大(占工业总能耗12%)、供应链协同低效(库存周转率低于制造业均值30%)三大挑战。《石…...
JAVA——初识JAVA
文章目录 如何在cmd上编译、运行代码解析String[] args中放的是什么Java结构编译运行可能遇到的错误Java中的注释Java的三种注释编码不一致的问题 IDEA常用基础开发快捷键补齐快捷键注释快捷键 IDEA的基础调式方法标识符 如何在cmd上编译、运行 在没有集成开发环境下ÿ…...
Shell脚本的学习
编写脚本文件 定义以开头:#!/bin/bash #!用来声明脚本由什么shell解释,否则使用默认shel 第一步:编写脚本文件 #!/bin/bash #注释 echo "这是输出" 第二步:加上执行权限:chmod x 脚本文件名.sh 第三步&…...
专题十四:动态路由——OSPF
一、OSPF简介 开放式最短路径优先OSPF(Open Shortest Path First)是IETF组织开发的一个基于链路状态的内部网关协议(Interior Gateway Protocol),采用DIjkstra算法,协议号是89。用于自治系统(A…...
聊聊Spring AI的Multimodality
序 本文主要研究一下Spring AI的Multimodality 示例 chatModel示例 var imageResource new ClassPathResource("/multimodal.test.png");var userMessage new UserMessage("Explain what do you see in this picture?", // contentnew Media(MimeTy…...
区块链点燃游戏行业新未来——技术变革与实践指南
区块链点燃游戏行业新未来——技术变革与实践指南 在数字时代,游戏行业无疑是创新的热土。从简单像素风的街机游戏到沉浸式的虚拟现实,我们见证了技术如何一步步塑造游戏的样貌。然而,在传统游戏模式中,玩家权益往往无法得到保障…...
Cocos Creator Shader入门实战(八):Shader实现圆形、椭圆、菱形等头像
引擎:3.8.5 您好,我是鹤九日! 回顾 Shader的学习是一条漫长的道路。 理论知识的枯燥无味,让很多人选择了放弃。然而不得不说:任何新知识、新领域的学习,本身面临的都是问题! 互联网和AI给了我…...
大模型SFT用chat版还是base版 SFT后灾难性遗忘怎么办
大模型SFT用chat版还是base版 进行 SFT 时,基座模型选用 Chat 还是 Base 模型? 选 Base 还是 Chat 模型,首先先熟悉 Base 和 Chat 是两种不同的大模型,它们在训练数据、应用场景和模型特性上有所区别。 在训练数据方面…...
【AI论文】VCR-Bench:视频链式思考推理的综合评估框架
摘要:思想链(CoT)推理的进步显著增强了大型语言模型(LLMs)和大型视觉语言模型(LVLMs)的能力。 然而,目前仍然缺乏一个严格的视频CoT推理评估框架。 目前的视频基准测试无法充分评估推…...
数据中台、BI业务访谈(二):组织架构梳理的坑
这是数据中台、BI业务访谈系列的第二篇文章,在上一篇文章中,我重点介绍了在给企业的业务部门、高层管理做业务访谈之前我们要做好行业、业务知识的功课。做好这些功课之后,就到了实际的访谈环节了。 业务访谈关键点 那么在具体业务访谈的时…...
【零基础实战】Ubuntu搭建DVWA漏洞靶场全流程详解(附渗透测试示例)
【零基础实战】Ubuntu搭建DVWA漏洞靶场全流程详解(附渗透测试示例) (声明:实际操作请遵守网络安全法,仅在授权环境进行测试,仅供个人研究) 一、DVWA靶场简介 DVWA(Damn Vulnerable Web Application)是专为网络安全学习者设计的漏洞演练平台,包含SQL注入、XSS、文件…...
库学习04——numpy
一、基本属性 二、 创建数组 (一)arange a np.arange(10,20,2) # [10,12,14,16,18] 只有一个参数n的话,默认是从0到n-1的一维数组。 (二)自定义reshape a np.arange(12).reshape((3,4)) [[ 0 1 2 3][ 4 5 …...
Win10系统安装WSL2-Ubuntu, 并使用VScode开始工作
本教程基于博主当前需要使用 WSL2(Windows Subsystem for Linux 2) 而编写,将自己使用的经过分享给大家。有什么意见建议敬请大家批评指正。此过程需要打开 Microsoft Store 话不多说,立即开始~ 文章目录 1. 检查系统版本2. 启动 WSL 功能3. 安装Ubuntu4…...
SLAM(七)-卡尔曼滤波
SLAM(七)-卡尔曼滤波 一、卡尔曼滤波(KF)二、扩展卡尔曼滤波(EKF)三、误差状态卡尔曼滤波(ESKF) 参考《概率机器人》、《Principles of GNSS,lnertial and Multisensor lntegrated Navigation Systems (Second Edition)》 一、卡尔曼滤波(KF)…...
如何解决DDoS攻击问题 ?—专业解决方案深度分析
本文深入解析DDoS攻击面临的挑战与解决策略,提供了一系列防御技术和实践建议,帮助企业加强其网络安全架构,有效防御DDoS攻击。从攻击的识别、防范措施到应急响应,为网络安全工作者提供了详细的操作指引。 DDoS攻击概览:…...
解决 Ubuntu 上 Docker 安装与网络问题:从禁用 IPv6 到配置代理
解决 Ubuntu 上 Docker 安装与网络问题的实践笔记 在 Ubuntu(Noble 版本)上安装 Docker 时,我遇到了两个常见的网络问题:apt-get update 失败和无法拉取 Docker 镜像。通过逐步排查和配置,最终成功运行 docker run he…...
