C++ 变量和常量:开启程序构建之门的关键锁钥与永恒灯塔
目录
一、变量
1.1 变量的创建
1.2 变量的初始化
1.3 变量的分类
1.4 变量的初始化
二、常量
2.1 字面常量
2.2 #define定义常量
2.3 const 定义常量
一、变量
1.1 变量的创建
data_type name;
| |
| |
数据类型 变量名
-------------
int age; //整型变量
char ch; //字符变量
double weight; //浮点型变量
变量的命名规则遵循以下原则:
-
变量名只能由字母、数字和下划线组成,且必须以字母或下划线开头。
-
变量名不能以纯数字开头,也不能包含特殊字符,如空格、连字符等。
-
变量名不能使用语言的关键字,如 int、char、if等。
-
变量名应具有意义,有助于理解变量的含义和用途。
-
变量名应简短明了,避免使用过长的名称。
-
变量名应区分大小写,例如 myVariable 和 myvariable 被视为两个不同的变量。
1.2 变量的初始化
变量在创建的时候就给一个初始值,就叫初始化。
#include<iostream>
using namespace std;int main()
{int num1 = 10 ;char ch = 'A';double num2 = 3.1415926;
}
如果变量的创建并没有初始化,而是在后续进行初始化操作,那么该操作称为赋值:
#include<iostream>
using namespace std;int main()
{int num;num = 10; //变量的赋值
}
1.3 变量的分类
-
全局变量:在大括号外部定义的变量就是全局变量。全局变量的使用范围更广,整个工程中想使用,都是有办法使用的
-
局部变量:在大括号内部定义的变量就是局部变量
局部变量的使用范围是比较局限,只能在自己所在的局部范围内使用的
#include<iostream>
using namespace std;int NUM = 100;
int main()
{int num = 200;cout << NUM << endl;cout << num << endl;return 0;
}

如果局部和全局变量,名字相同:
#include<iostream>
using namespace std;int NUM = 100;
int main()
{int NUM = 200;//当局部变量和全局变量名称相同的情况下,局部变量优先使用cout << "局部变量:" << NUM << endl;//如果我们需要强制使用全局变量,需要在变量前添加两个::cout << "全局变量:" <<::NUM << endl;return 0;
}

1.4 变量的初始化
未初始化状态下的全局变量和局部变量:
#include<iostream>
using namespace std;int NUM1;
float NUM2;
int main()
{int num1;float num2;// 未初始化的局部变量和全局变量cout << NUM1 << endl;cout << NUM2 << endl;cout << "不同编译器的版本,局部变量未初始化的值是不确定的" << endl;cout << num1 << endl;cout << num2 << endl; return 0;
}

-
全局变量:全局变量通常在定义时就被初始化,如果没有明确指定初始值,它们通常会被初始化为0。
-
局部变量:局部变量通常不会自动初始化。它们需要在使用之前明确地赋值或初始化。如果没有初始化,它们的值将是未定义的,使用未初始化的局部变量可能会导致不可预测的行为或运行时错误,因此局部变量建议初始化。
二、常量
常量就是不能被改变的值,通常我们会使用三种常量:
-
字面常量
-
#define 定义的常量
-
const 定义的常量
2.1 字面常量
-
整型常量: 100,-5,0,0x123 整型常量一般可以写成10进制、8进制、16进制。
-
10进制数字,如: 6、17、22、123
-
8进制数字,一般是数字0开头的,比如: 012 , 016
-
16进制数字,一般是0x开头的数字,比如: 0x123 , 0xFF
-
-
字符常量: 'a'
-
浮点型常量: 3.14 , 1E6 (科学计数法的形式)
2.2 #define定义常量
使用 #define 定义常量的时候是不关注类型的,只关注常量的名字叫啥,常量的值是啥,编译在处理这种常量的时候就是直接替换,在出现常量名字的地方,通通替换成常量的内容。
#include <iostream>
using namespace std;
#define M 100
#define CH 'x'
#define PI 3.14159
int main()
{cout << M << endl;cout << CH << endl;cout << PI << endl;return 0;
}

2.3 const 定义常量
除了上面的方式之外,C++中还可以使用 const 来定义常量,这种常量会有具体的类型。比#define 定义常量更加严谨。语法形式如下:
const 类型 常量名字 = 常量值;const double PI = 3.14159;
#include <iostream>
using namespace std;
const double PI = 3.14159;
int main()
{int r = 0;cin >> r;cout << "周长:" << 2 * PI * r << endl;cout << "面经:" << PI * r * r << endl;//PI = 3.14;//这种写法是错误的,常量不能被修改return 0;
}

习惯上,这种常量的名字一般会写成大写,而普通变量的名字不会全大写,这样就可以做一个区分。
使用 const 定义的常量的好处:
-
增加了程序的可读性, PI 比 3.14159 更加容易理解和书写、使用。
-
增加了程序的可维护性,如果改变常量的值,只要在定义的部分修改,使用的地方也就随之改变了,做到了"一改全改"的效果。
-
常量是不能修改的,当然 const 定义的常量自然也不能修改。
相关文章:
C++ 变量和常量:开启程序构建之门的关键锁钥与永恒灯塔
目录 一、变量 1.1 变量的创建 1.2 变量的初始化 1.3 变量的分类 1.4 变量的初始化 二、常量 2.1 字面常量 2.2 #define定义常量 2.3 const 定义常量 一、变量 1.1 变量的创建 data_type name; | | | | 数据类型 变量名 ------------- int age; //整型变量 char ch; …...
Linux部分实用操作
目录 1、快捷键 2、软件安装 3、systemctl 4、ln命令创建软连接 5、IP地址 6、主机名 7、域名解析 8、网络传输 ping wget curl命令 9、端口 10、进程 11、主机状态 查看系统资源占用--top 磁盘信息监控--df--iostat 网络状态监控--sar -n DEV 12、环境…...
Linux笔记---进程:进程地址空间
1. 地址空间 程序地址空间是指程序在执行期间可以访问的内存范围。它由操作系统为每个进程分配,以确保进程之间不会相互干扰。地址空间包含了程序所需的所有内存区域,包括代码、已初始化和未初始化的数据、堆(heap)、栈ÿ…...
flutter in_app_purchase google支付 PG-GEMF-01错误
问题:PG-GEMF-01错误 flutter 使用in_app_purchase插件升降级订阅时报错PG-GEMF-01。 解决方案: 升降级订阅时,确保不调用 MethodCallHandlerImpl.java文件中的 setObfuscatedAccountId()方法、setObfuscatedProfileId()方法 原因…...
“精神内耗”的神经影像学证据:担忧和反刍会引发相似的神经表征
摘要 重复性消极思维(RNT)包括面向未来的担忧和面向过去的反刍,两者在认知和情感上具有相似的特征。这些不同但相关的过程在大多程度上会激活重叠的神经结构尚不确定,因为大多数神经科学研究只单独研究担忧或反刍。为了解决这个问题,本研究使…...
Linux--Debian或Ubuntu上扩容、挂载磁盘并配置lvm
一、三块12TB组RAID 5 可用容量约24TB 二、安装LVM工具(已安装请忽略) sudo apt-get install lvm2二、查看可用磁盘 sudo lsblk 或者 sudo fdisk -l三、创建物理卷(PV) 选中刚做的磁盘组 sudo pvcreat /dev/sdb1四、创建卷组…...
【k8s】kubelet 的相关证书
在 Kubernetes 集群中,kubelet 使用的证书通常存放在节点上的特定目录。这些证书用于 kubelet 与 API 服务器之间的安全通信。具体的位置可能会根据你的 Kubernetes 安装方式和配置有所不同,下图是我自己环境【通过 kubeadm 安装的集群】中的kubelet的证…...
01-树莓派基本配置-基础配置配置
树莓派基本配置 文章目录 树莓派基本配置前言硬件准备树莓派刷机串口方式登录树莓派接入网络ssh方式登录树莓派更换国内源xrdp界面登录树莓派远程文件传输FileZilla 前言 树莓派是一款功能强大且价格实惠的小型计算机,非常适合作为学习编程、物联网项目、家庭自动化…...
【Windows 11专业版】使用问题集合
博文将不断学习补充 I、设置WIN R打开应用默认使用管理员启动 1、WIN R输入 secpol.msc 进入“本地安全策略”。 2、按照如下路径,找到条目: “安全设置”—“本地策略”—“安全选项”—“用户账户控制:以管理员批准模式运行所有管理员” …...
前端 vue3 + element-plus + ts 组件通讯,defineEmits,子传父示例
父组件: 子组件:...
【Django-xadmin】
时间长不用,会忘的系列 1、Django-xadmin后台字段显示处理 主要是修改每个模块下adminx.py文件 代码解释:第1行控制表单字段显示第2行控制列表字段显示第3行控制搜索条件第4行控制过滤条件第5行支持单个或多个字段信息修改第6行列表分页,每页显示多少行…...
Ubuntu24.04初始化教程(包含基础优化、ros2)
将会不断更新。但是所有都是基础且必要的操作。 为重装系统之后的环境配置提供便捷信息来源。记录一些错误的解决方案。 目录 构建系统建立系统备份**Timeshift: 系统快照和备份工具****安装 Timeshift****使用 Timeshift 创建快照****还原快照****自动创建快照** 最基本配置换…...
45 基于单片机的信号选择与温度变化
目录 一、主要功能 二、硬件资源 三、程序编程 四、实现现象 一、主要功能 基于51单片机,采用DS18B20检测温度,通过三种LED灯代表不同状态。 采用DAC0832显示信号脉冲,通过8位数码管显示温度。 信号脉冲可以根据两个按键分别调整为正弦…...
#JAVA-常用API-爬虫
1.爬虫 我们在正则表达式的讲解中可以使用字符串的方法materchs()来匹配,并且返回一个boolean值 String name "lshhhljh"; System.out.println(name.matches("lsh{3}\\s{3}")); //true现在我们将利用正则表达式来爬取本地或者网站上的文本内…...
Qt 面试题复习10~12_2024-12-2
Qt 面试题 28、Qt 如果一个信号的处理方法一直未被执行有哪些可能性29、Qt 三大核心机制30、虚函数表31、什么是Qt事件循环 ?32、纯虚函数和普通的虚函数有什么区别33、Qt 的样式表是什么?34、描述Qt的TCP通讯流程35、自定义控件流程36、什么是Qt的插件机…...
在OpenHarmony系统下开发支持Android应用的双框架系统
在 OpenHarmony 系统下开发支持 Android 应用的双框架系统,主要的目标是实现 OpenHarmony 本身作为底层操作系统,并通过兼容层或者桥接技术,允许 Android 应用在其上运行。双框架系统的架构设计会涉及到 OpenHarmony 和 Android 的结合&#…...
对力扣77组合优化的剪枝操作的理解
77. 组合 代码随想录放出了这一张图 我乍一看觉得想当然,但是仔细想想,又不知道以下剪枝代码作何解释,因此我想通过这篇文章简要解释一下 class Solution { private:vector<vector<int>> result;vector<int> path;void backtracking(int n, int k, int sta…...
SpringMVC中的Handler、HandlerMapping、HandlerAdapter
SpringMVC中的Handler、HandlerMapping、HandlerAdapter到底是啥 这东西,虽然说和我们的开发没啥关系,尤其是当你用SpringBoot进行开发时,这些接口离你越来越远了。讲实话,要不是这学期扫一眼学校的课件,我都不知道有这东西,这东西本来就是对使用框架进行开发的开发者隐藏…...
tomcat 8在idea启动控制台乱码
Tomcat 8在IntelliJ IDEA(简称IDEA)启动控制台出现乱码的问题,通常是由于Tomcat的默认编码格式(UTF-8)与IDEA或操作系统的默认编码格式(如GBK)不一致所导致的。以下是一些解决此问题的步骤&…...
windows下kafka初体验简易demo
这里提供了windows下的java1.8和kafka3.9.0版本汇总,可直接免费下载 【免费】java1.8kafka2.13版本汇总资源-CSDN文库 解压后可以得到一个文件夹 资料汇总内有一个kafka文件资料包.tgz,解压后可得到下述文件夹kafka_2.13-3.9.0,资料汇总内还…...
【JavaEE】-- HTTP
1. HTTP是什么? HTTP(全称为"超文本传输协议")是一种应用非常广泛的应用层协议,HTTP是基于TCP协议的一种应用层协议。 应用层协议:是计算机网络协议栈中最高层的协议,它定义了运行在不同主机上…...
页面渲染流程与性能优化
页面渲染流程与性能优化详解(完整版) 一、现代浏览器渲染流程(详细说明) 1. 构建DOM树 浏览器接收到HTML文档后,会逐步解析并构建DOM(Document Object Model)树。具体过程如下: (…...
Nginx server_name 配置说明
Nginx 是一个高性能的反向代理和负载均衡服务器,其核心配置之一是 server 块中的 server_name 指令。server_name 决定了 Nginx 如何根据客户端请求的 Host 头匹配对应的虚拟主机(Virtual Host)。 1. 简介 Nginx 使用 server_name 指令来确定…...
IT供电系统绝缘监测及故障定位解决方案
随着新能源的快速发展,光伏电站、储能系统及充电设备已广泛应用于现代能源网络。在光伏领域,IT供电系统凭借其持续供电性好、安全性高等优势成为光伏首选,但在长期运行中,例如老化、潮湿、隐裂、机械损伤等问题会影响光伏板绝缘层…...
智能仓储的未来:自动化、AI与数据分析如何重塑物流中心
当仓库学会“思考”,物流的终极形态正在诞生 想象这样的场景: 凌晨3点,某物流中心灯火通明却空无一人。AGV机器人集群根据实时订单动态规划路径;AI视觉系统在0.1秒内扫描包裹信息;数字孪生平台正模拟次日峰值流量压力…...
算法笔记2
1.字符串拼接最好用StringBuilder,不用String 2.创建List<>类型的数组并创建内存 List arr[] new ArrayList[26]; Arrays.setAll(arr, i -> new ArrayList<>()); 3.去掉首尾空格...
C++ 设计模式 《小明的奶茶加料风波》
👨🎓 模式名称:装饰器模式(Decorator Pattern) 👦 小明最近上线了校园奶茶配送功能,业务火爆,大家都在加料: 有的同学要加波霸 🟤,有的要加椰果…...
xmind转换为markdown
文章目录 解锁思维导图新姿势:将XMind转为结构化Markdown 一、认识Xmind结构二、核心转换流程详解1.解压XMind文件(ZIP处理)2.解析JSON数据结构3:递归转换树形结构4:Markdown层级生成逻辑 三、完整代码 解锁思维导图新…...
【51单片机】4. 模块化编程与LCD1602Debug
1. 什么是模块化编程 传统编程会将所有函数放在main.c中,如果使用的模块多,一个文件内会有很多代码,不利于组织和管理 模块化编程则是将各个模块的代码放在不同的.c文件里,在.h文件里提供外部可调用函数声明,其他.c文…...
Django RBAC项目后端实战 - 03 DRF权限控制实现
项目背景 在上一篇文章中,我们完成了JWT认证系统的集成。本篇文章将实现基于Redis的RBAC权限控制系统,为系统提供细粒度的权限控制。 开发目标 实现基于Redis的权限缓存机制开发DRF权限控制类实现权限管理API配置权限白名单 前置配置 在开始开发权限…...
