【C++入门语法】1.变量的世界


欢迎来到C++的世界!在这篇文章中,我们将一起探索C++编程中的基本概念——变量。变量是程序设计中非常重要的一部分,它们是存储数据的容器,让我们的程序能够记住和操作这些信息。

什么是变量?

变量是一个标识符,用于存储数据值。你可以把它想象成一个带有标签的盒子,这个标签就是变量名,盒子里的内容就是变量的值。在C++中,每个变量都有特定的数据类型,这决定了变量可以存储的数据种类和大小。

变量命名规则

在C++中,给变量命名有一些基本规则需要遵守:

  1. 以字母或下划线开头:变量名必须以字母(a-z, A-Z)或下划线(_)开始。
  2. 包含字母、数字和下划线:变量名可以包含字母、数字和下划线,但不能包含空格、标点符号或特殊字符。
  3. 区分大小写:C++是大小写敏感的,所以myVariablemyvariable是两个不同的变量。
  4. 不要使用C++关键字:避免使用C++的保留关键字作为变量名,如int, float, char等。

数据类型

C++支持多种数据类型,每种类型都有其特定的用途和存储大小。以下是一些基本的数据类型:

  • 整型(Integer Types):如int(整数)、short(短整型)、long(长整型)等。
  • 浮点型(Floating-point Types):如float(单精度浮点)、double(双精度浮点)等。
  • 字符型(Character Types):如char(字符)。
  • 布尔型(Boolean Type):bool,只有两个值:true和false。

各种数据类型的范围表:

数据类型范围/大小
booltruefalse
char-128 到 127 (有符号), 0 到 255 (无符号)
signed char-128 到 127
unsigned char0 到 255
shortshort int-32,768 到 32,767 (有符号), 0 到 65,535 (无符号)
signed shortsigned short int-32,768 到 32,767
unsigned shortunsigned short int0 到 65,535
intinteger-2,147,483,648 到 2,147,483,647 (有符号), 0 到 4,294,967,295 (无符号)
signedsigned int-2,147,483,648 到 2,147,483,647
unsignedunsigned int0 到 4,294,967,295
longlong int-2,147,483,648 到 2,147,483,647 (32位系统), -9,223,372,036,854,775,808 到 9,223,372,036,854,775,807 (64位系统), 0 到 4,294,967,295 (无符号32位系统), 0 到 18,446,744,073,709,551,615 (无符号64位系统)
signed longsigned long int-2,147,483,648 到 2,147,483,647 (32位系统), -9,223,372,036,854,775,808 到 9,223,372,036,854,775,807 (64位系统)
unsigned longunsigned long int0 到 4,294,967,295 (32位系统), 0 到 18,446,744,073,709,551,615 (64位系统)
long longlong long int-9,223,372,036,854,775,808 到 9,223,372,036,854,775,807 (有符号), 0 到 18,446,744,073,709,551,615 (无符号)
signed long longsigned long long int-9,223,372,036,854,775,808 到 9,223,372,036,854,775,807
unsigned long longunsigned long long int0 到 18,446,744,073,709,551,615
float约 ±1.2E-38 到 ±3.4E+38 (6-9位有效数字)
double约 ±2.3E-308 到 ±1.8E+308 (15位有效数字)
long double扩展双精度浮点数, 范围和精度取决于系统和编译器

变量的作用域和生命周期

变量的作用域决定了变量在程序中的哪些部分可见。局部变量(在函数内部定义)的作用域仅限于该函数内部。全局变量(在函数外部定义)的作用域则是整个程序。

变量的生命周期指的是变量的存在时间。局部变量的生命周期从它们被创建(进入其作用域)开始,到它们被销毁(离开其作用域)结束。全局变量的生命周期是整个程序的运行时间。

C++变量注意事项

  1. 变量声明和定义

    • 在C++中,变量的声明和定义是相似的,但在一些上下文中有所不同。声明只是告诉编译器变量的存在和类型,而定义还包括为变量分配内存。
  2. 变量作用域

    • 变量的作用域决定了其可见性和生命周期。局部变量在声明它的代码块内可见,并在代码块结束时销毁。全局变量在整个程序中都可见,并在程序开始时创建,结束时销毁。
  3. 变量存储类别

    • C++中的变量可以具有不同的存储类别,如自动(auto)、静态(static)、外部(extern)和寄存器(register)。这些类别决定了变量的生命周期和存储方式。
  4. 变量初始化

    • 局部变量在使用前必须初始化,否则它们的值是不确定的。全局变量和静态变量会自动初始化为0。
  5. 命名约定

    • 变量名应清晰、描述性,并且遵循一致的命名约定。常见的命名约定包括驼峰命名法(camelCase)和下划线命名法(snake_case)。
  6. 类型匹配

    • 变量应声明为适当的类型,以匹配它们将存储的数据。错误的类型选择可能导致数据丢失、内存浪费或意外的行为。
  7. 避免命名冲突

    • 避免使用C++关键字和已经存在的函数、类名等作为变量名,以减少命名冲突和潜在的编译错误。
  8. 作用域解析运算符

    • 在嵌套作用域中,如果局部变量和全局变量同名,可以使用作用域解析运算符(::)来明确指定要使用的变量。
  9. 常量变量

    • 使用const关键字来声明常量变量,这些变量的值在初始化后不能被修改。这有助于提高代码的可读性和可维护性。
  10. 避免使用魔术数字

    • 尽量避免在代码中使用硬编码的“魔术数字”,而是使用具有描述性名称的常量来替代这些数字。
  11. 变量的可修改性

    • 在函数内部,默认情况下变量是可修改的(非const)。如果需要保证变量不被修改,应使用const关键字。
  12. 变量的内存管理

    • 对于动态分配的内存(如使用new关键字),务必使用delete来释放内存,以防止内存泄漏。对于数组,应使用new[]delete[]来匹配分配和释放。
  13. 注意变量的生命周期

    • 了解变量的生命周期是很重要的,尤其是在涉及动态分配内存、资源管理和并发编程时。确保在变量不再需要时正确释放其占用的资源。

通过遵循这些注意事项,您可以编写出更加健壮、可读和可维护的C++代码。```

这段Markdown代码可以直接复制到任何支持Markdown的文本编辑器或预览器中,以便查看或分享。

变量的赋值和初始化

在C++中,你可以使用赋值运算符(=)来给变量赋值。赋值运算符的左边是变量名,右边是要赋给该变量的值。

int myInt;    // 声明一个整数变量,但未初始化  
myInt = 10;   // 给变量赋值为10

你也可以在声明变量的同时初始化它:

下面是一个简单的C++程序,演示了如何使用变量:

#include <iostream>
int main() {
// 声明并初始化变量
int age = 25;
float salary = 5000.00;
char gender = 'M';
bool isEmployee = true;
// 输出变量的值
std::cout << "Age: " << age << std::endl;
std::cout << "Salary: " << salary << std::endl;
std::cout << "Gender: " << gender << std::endl;
std::cout << "Is Employee? " << (isEmployee ? "Yes" : "No") << std::endl;
return 0;
}

这个程序定义了几个不同类型的变量,并输出了它们的值。注意,在输出布尔值时,我们使用了三元运算符(? :)来将true和false转换为更易于理解的字符串。

通过这篇文章,你应该对C++中的变量有了初步的了解。如果想学习更多关于ACM算法竞赛、蓝桥杯大赛等算法竞赛相关知识,欢迎拜访www.starrycoding.com

StarryCoding是由我本人创办的计算机综合学习平台,我希望打造一个更加适合CS大学生学习与成长的高性价比平台,为大家提供更好的一站式教育服务。适用对象广泛
适用对象广泛
在这里插入图片描述
内容紧贴考纲,每节课约1.5小时高密度知识
在这里插入图片描述
广受好评,学习氛围浓厚,平等互助,拒绝歧视与绑架
在这里插入图片描述
视频、习题、文档,想学就学
没错,在学习算法的时候你甚至可以看V。
最最最最最最最最重要的是,由于课程的准备、录制、平台(前后端和评测机)的开发、推广都是由我一人完成,所以成本压的非常非常低,算法基础课仅售39元。
欢迎加入StarryCoding官方用户Q群:746470220(官网www.starrycoding.com)
悄悄说:StarryCoding平台还有算法中级课(可以自行了解)。

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

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

相关文章

Python基于大数据的电影预测分析系统

博主介绍&#xff1a;✌程序员徐师兄、7年大厂程序员经历。全网粉丝30W、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推荐订阅&#x1f447;…

steam搬砖项目,“一个月赚8K+”真的假的?

在游戏中&#xff0c;搬砖党是永远都不能忽视的存在&#xff0c;随着游戏产业的不断发展&#xff0c;普通人也可以在steam搬砖项目中找到自己的生财之道。由于是低技术的重复工作&#xff0c;和现实的搬砖类似&#xff0c;所以才叫steam搬砖项目。 steam搬砖项目其实就和pdd无…

【RL】Bellman Optimality Equation(贝尔曼最优等式)

Lecture3: Optimal Policy and Bellman Optimality Equation Definition of optimal policy state value可以被用来去评估policy的好坏&#xff0c;如果&#xff1a; v π 1 ( s ) ≥ v π 2 ( s ) for all s ∈ S v_{\pi_1}(s) \ge v_{\pi_2}(s) \;\;\;\;\; \text{for all…

TypeScript 入门

课程地址 ts 开发环境搭建 npm i -g typescript查看安装位置&#xff1a; $ npm root -g C:\Users\Daniel\AppData\Roaming\npm\node_modules创建 hello.ts&#xff1a; console.log("hello, ts");编译 ts 文件&#xff0c;得到 js 文件&#xff1a; $ tsc foo.…

华为机考入门python3--(14)牛客14-字符串排序

分类&#xff1a;列表、排序 知识点&#xff1a; 字典序排序 sorted(my_list) 题目来自【牛客】 def sort_strings_by_lex_order(strings): # 使用内置的sorted函数进行排序&#xff0c;默认是按照字典序排序 sorted_strings sorted(strings) # 返回排序后的字符串列…

H5 渐变3D旋转个人主页引导页源码

H5 渐变3D旋转个人主页引导页源码 源码介绍&#xff1a;一款渐变3D旋转个人主页引导页源码&#xff0c;可以做个人主页/旗下网站引导 下载地址&#xff1a; https://www.changyouzuhao.cn/10392.html

linux信号机制[二]

阻塞信号 信号相关概念 实际执行信号的处理动作称为信号递达(Delivery)信号从产生到递达之间的状态,称为信号未决(Pending)。[收到信号但是没有处理]进程可以选择阻塞 (Block )某个信号。被阻塞的信号产生时将保持在未决状态,直到进程解除对此信号的阻塞,才执行递达的动作.注…

“从根到叶:深入理解堆数据结构“

​​​​​​​ 一.堆的概念及实现 1.1堆的概念 在数据结构中&#xff0c;堆是一种特殊的树形数据结构。堆可以分为最大堆和最小堆两种类型。 最大堆&#xff1a;对于堆中的任意节点&#xff0c;其父节点的值都不小于它的值。换句话说&#xff0c;最大堆中的根节点是堆中的最…

猫头虎分享已解决Bug || Invariant Violation in React: Element Type is Invalid ‍

博主猫头虎的技术世界 &#x1f31f; 欢迎来到猫头虎的博客 — 探索技术的无限可能&#xff01; 专栏链接&#xff1a; &#x1f517; 精选专栏&#xff1a; 《面试题大全》 — 面试准备的宝典&#xff01;《IDEA开发秘籍》 — 提升你的IDEA技能&#xff01;《100天精通鸿蒙》 …

java 数据结构ArrayList类

目录 什么是List 线性表 顺序表 ArrayList类 ArrayList无参方法 ArrayList有参方法 &#xff1f;通配符 ArrayList 的remove方法 ArrayList 的subList方法 Iterator&#xff1a;迭代器 使用ArrayList完成杨辉三角 什么是List 在集合框架中&#xff0c;List是一个接…

vue 向某个网址 传递数据

1. 需求 现在有一个网站需要 配置上另一个网站的东西 类似这样的东西吧 就是我需要再一个网站上 右边或者其他地方 放另一个页面的地址 这个地址需要给我传递东西 或我这个网站给其他的网站传递token了 id等 2.解决 window.parent.postMessage({ token: loginRes.token, id:…

第5个-模糊加载

Day 5 - Blurry Loading 1. 项目展示 2. 分析思路 变化过程 数字从 0 不断增长到 100&#xff1b;中间的百分比数字逐渐消失&#xff0c;即透明度 opacity 从 1 到 0&#xff1b;背景图片从模糊变为清晰&#xff0c;滤镜 filter.blur()的参数设置为从 30px 到 0px。 小 tips…

点云旋转(基于PCL)

实现代码为&#xff1a; //以中心化点进行旋转double theta atan(maindirection.a);//计算的是弧度单位for (int i 0; i < origipts.size(); i){pcl::PointXYZ tempone;tempone.x aftercenerlizepts[i].x*cos(theta) aftercenerlizepts[i].y*sin(theta) center.x;temp…

Hive调优——合并小文件

目录 一、小文件产生的原因 二、小文件的危害 三、小文件的解决方案 3.1 小文件的预防 3.1.1 减少Map数量 3.1.2 减少Reduce的数量 3.2 已存在的小文件合并 3.2.1 方式一&#xff1a;insert overwrite (推荐) 3.2.2 方式二&#xff1a;concatenate 3.2.3 方式三&#xff…

【Zigbee课程设计系列文章】Zigbee开发环境搭建

【Zigbee课程设计系列文章】Zigbee开发环境搭建 前言IAR 下载安装Z-Stack协议栈安装 &#x1f38a;项目专栏&#xff1a;【Zigbee课程设计系列文章】&#xff08;附详细使用教程完整代码原理图完整课设报告&#xff09; 前言 &#x1f451;由于无线传感器网络&#xff08;也即…

RMSNorm原理及代码

RMSNorm原理及代码 在大模型中使用层归一化有如下几个因素&#xff1a; 改善网络稳定性加速收敛速度提高模型的泛化能力 批量归一化是对一个批次内的数据进行归一化 层归一化是对一个样本中的不同特征进行归一化 如下是LayerNorm与RMSNorm的公式 在LLaMA中使用RMSNorm替代…

【华为云】容灾方案两地三中心实践理论

应用上云之后&#xff0c;如何进行数据可靠性以及业务连续性的保障是非常关键的&#xff0c;通过华为云云上两地三中心方案了解相关方案认证地址&#xff1a;https://connect.huaweicloud.com/courses/learn/course-v1:HuaweiXCBUCNXI057Self-paced/about当前内容为灾备常见理论…

NARF关键点提取原理简介

一、NARF2D边缘点探测的矩形平面的边长s和计算点p和上邻域的距离所用的k值 二、障碍物边缘和阴影边缘 三、NARF边缘点探测 四、NARF借助边缘点信息进行关键点检测 本人也是参考其他博主&#xff0c;以及这份英文文献写的(毕竟是英文文献&#xff0c;部分翻译肯定有些误差&…

企业计算机服务器中了mkp勒索病毒怎么办?Mkp勒索病毒解密处理

随着网络技术的不断发展&#xff0c;企业的生产运营也加大了步伐&#xff0c;网络为企业的生产运营提供了强有力保障&#xff0c;但网络是一把双刃剑&#xff0c;给企业带来便利的同时也为企业带来了严重的数据威胁。春节期间&#xff0c;云天数据恢复中心接到很多企业的值班人…

反序列化漏洞(一)Shiro漏洞CVE-2016-4437复现

★★免责声明★★ 文章中涉及的程序(方法)可能带有攻击性&#xff0c;仅供安全研究与学习之用&#xff0c;读者将信息做其他用途&#xff0c;由Ta承担全部法律及连带责任&#xff0c;文章作者不承担任何法律及连带责任。 1、前言 春节后第一篇&#xff0c;祝大家龙年一切顺利&…