【C/C++】C/C++编程——变量和常量

文章目录

      • 变量
        • 变量的声明
        • 变量命名规则
        • 变量的类型
      • 常量
        • 常量的定义与初始化
        • 字面量常量
        • 整型常量
        • 浮点型常量
        • 字符常量
        • 常量表达式(`constexpr`)

大家好,我是 shopeeai,也可以叫我虾皮,中科大菜鸟研究生。今天我们来一起来学习C++中的变量和常量。

变量

变量是编程中的基本概念,它是存储信息的容器,这些信息或数据在程序执行过程中可以被修改。每个变量都有指定的类型,决定了变量可以存储什么类型的数据以及对变量可以执行哪些操作。

变量的声明

在 C++ 中声明变量时,你需要指定变量的类型和名称。例如:

int age; // 声明一个整型变量age
double salary; // 声明一个双精度浮点变量salary
char grade; // 声明一个字符型变量grade

声明变量时可以同时初始化它,即在声明时给它赋一个初始值:

int age = 25; // 声明并初始化整型变量age
double salary = 3000.50; // 声明并初始化双精度浮点变量salary
char grade = 'A'; // 声明并初始化字符型变量grade
变量命名规则
  1. 字母和数字:变量名可以包含字母(a-zA-Z)和数字(0-9),但必须以字母或下划线(_)开头。数字不能作为变量名的第一个字符。
  2. 下划线:变量名可以包含下划线(_),并且可以以下划线开头。但是,以单个下划线开头的变量名在全局命名空间中有特殊含义,通常用于实现的内部或保留使用,因此应避免使用。
  3. 大小写敏感:C++ 是大小写敏感的语言,这意味着 VariablevariableVARIABLE 会被视为不同的变量名。
  4. 关键字限制:不能使用 C++ 的关键字(如 intreturnclass 等)作为变量名。关键字在 C++ 语言中有特殊的意义和用途。
  5. 长度限制:理论上,变量名的长度没有限制,但是为了可读性和实用性,建议保持在合理的长度内。过长的变量名可能会使代码难以阅读和理解。
变量的类型

C++ 提供了多种数据类型,主要包括:

  • 整数类型:如 int, short, long, long long 等。
  • 浮点类型:如 float, double, long double 等,用于表示小数。
  • 字符类型char,用于表示单个字符。
  • 布尔类型bool,表示逻辑值 truefalse

下面是一个简单的 C++ 代码示例,其中包含了几个不同类型的变量。我将对每行代码进行注释,并在代码示例之后提供一个总体的解释。

#include <iostream> // 包含输入输出流库using namespace std; // 使用标准命名空间int main() {int age = 30; // 定义一个整型变量age并初始化为30,用于存储年龄float height = 5.9; // 定义一个浮点型变量height并初始化为5.9,用于存储身高(单位:英尺)char grade = 'A'; // 定义一个字符型变量grade并初始化为'A',用于存储等级bool isGraduated = true; // 定义一个布尔型变量isGraduated并初始化为true,表示是否毕业string name = "John Doe"; // 定义一个字符串变量name并初始化为"John Doe",用于存储名字// 使用cout进行输出cout << "Name: " << name << endl; // 输出名字cout << "Age: " << age << endl; // 输出年龄cout << "Height: " << height << " feet" << endl; // 输出身高,附带单位cout << "Grade: " << grade << endl; // 输出等级cout << "Graduated: " << (isGraduated ? "Yes" : "No") << endl; // 输出是否毕业,使用三元运算符判断return 0; // 程序正常结束
}

运行结果

在这里插入图片描述

这段代码首先包含了 C++ 的标准输入输出流库 iostream,允许使用 cout 来输出信息到终端(屏幕)。使用 using namespace std; 声明之后,我们可以直接使用 std 命名空间中的所有内容,如 coutendl,而无需在它们前面加上 std:: 前缀。

main 函数中,我们定义并初始化了几种不同类型的变量:

  • int age = 30; 定义了一个整数类型的变量 age,用于存储年龄,并将其初始化为 30。
  • float height = 5.9; 定义了一个浮点类型的变量 height,用于存储身高,并将其初始化为 5.9 英尺。
  • char grade = 'A'; 定义了一个字符类型的变量 grade,用于存储等级,并将其初始化为 'A'
  • bool isGraduated = true; 定义了一个布尔类型的变量 isGraduated,用于表示是否毕业,并将其初始化为 true
  • string name = "John Doe"; 定义了一个字符串类型的变量 name,用于存储名字,并将其初始化为 "John Doe"

接下来,使用 coutendl 来输出这些变量的值。cout 是 C++ 中用于标准输出的对象,endl 是一个操纵符,用于在输出后添加换行符。

对于布尔变量 isGraduated,我们使用了三元运算符 (isGraduated ? "Yes" : "No") 来决定输出 "Yes" 还是 "No",这个三元运算符面会详细讲解。

最后,main 函数通过返回 0 正常结束,这是向操作系统表明程序成功执行的传统方式。

常量代表在程序执行过程中其值不可更改的变量。使用常量可以提高程序的可读性和维护性,因为它们允许给经常使用的值赋予易于理解的名字,同时确保这些值不会被意外修改。

常量

常量的定义与初始化

在 C++ 中,可以使用 const 关键字来定义常量。声明常量时,必须在声明中初始化它,因为之后无法修改其值。例如:

const int MAX_USERS = 100;  // 整型常量
const double PI = 3.14159;  // 浮点型常量

这里,MAX_USERSPI 一旦被赋值,它们的值就不能再被改变。

字面量常量

字面量常量是直接在代码中硬编码的常量值。例如,423.14'A' 分别是整型、浮点型和字符型的字面量常量。在 C++11 中,可以使用用户定义的字面量来扩展字面量常量的类型和功能。

整型常量

整型常量可以是十进制、八进制或十六进制。八进制常量以数字 0 开头,十六进制常量以 0x0X 开头。例如:

const int decVal = 42;   // 十进制
const int octVal = 042;  // 八进制
const int hexVal = 0x42; // 十六进制
浮点型常量

浮点型常量包括小数点或指数部分(或两者兼有),可以表示为单精度(fF 后缀)或双精度(无后缀或 lL 后缀)。例如:

const double pi = 3.14159;  // 双精度
const float e = 2.71828f;   // 单精度
字符常量

字符常量是用单引号括起来的单个字符。C++ 中的字符常量实际上是整型值,它们表示对应字符在字符集中的编号。可以使用转义序列来表示特殊字符。例如:

const char newline = '\n';  // 换行符
const char tab = '\t';      // 制表符
常量表达式(constexpr

C++11 引入了 constexpr 关键字,允许将变量、函数等声明为常量表达式。常量表达式在编译时就被计算,而不是在运行时,这有助于提高程序的性能。例如:

constexpr int getArraySize() {return 32;
}int myArray[getArraySize()];  // 使用常量表达式作为数组大小

下面是一个简单的 C++ 程序示例,该程序演示了如何使用常量和变量来计算圆的面积。

#include <iostream> // 包含头文件iostream,用于输入输出流// 定义PI为常量,表示圆周率的近似值
const double PI = 3.14159;int main() {double radius; // 声明一个双精度浮点型变量radius,用于存储圆的半径double area;   // 声明一个双精度浮点型变量area,用于存储圆的面积std::cout << "Enter radius: "; // 向标准输出打印提示信息,请求用户输入圆的半径std::cin >> radius; // 从标准输入读取用户输入的值,并将其赋给变量radiusarea = PI * radius * radius; // 计算圆的面积,公式为PI*radius^2// 向标准输出打印圆的面积,使用 << 运算符将文本和变量值发送到coutstd::cout << "The area of the circle with radius " << radius << " is " << area << std::endl;return 0; // 程序结束,返回0表示成功
}

运行结果

在这里插入图片描述

这个程序首先包含了头文件 iostream,它是 C++ 标准库中负责输入输出的部分。在程序的开始,我们定义了一个常量 PI,它代表圆周率的值。这个常量在程序的任何地方都不能被修改。

main 函数中,我们声明了两个类型为 double 的变量 radiusarearadius 用于存储用户输入的圆的半径,而 area 用于存储计算出的圆的面积。

接着,程序通过 std::cout 向用户显示提示信息,请求用户输入圆的半径。用户的输入通过 std::cin 读取并存储在变量 radius 中。

使用圆的面积公式 PI * radius * radius 计算面积,并将结果存储在变量 area 中。最后,程序使用 std::cout 输出圆的半径和计算出的面积。

程序以返回值 0 结束,这是一个通用的约定,表示程序成功执行结束。这个简单的示例展示了常量和变量的定义和使用,以及基本的输入输出操作。

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

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

相关文章

2.【Vue3】Vue 基本使用——局部使用Vue

1. 快速入门 现在需要将 “hello vue3” 这样一个字符串渲染到页面上进行展示。 这个需求并不陌生&#xff0c;可以使用原生 JS 代码完成&#xff1a; let msg"hello vue3"; document.getElementById("元素的id属性值").innerHTMLmsg;接下来学习如何使用…

麒麟系统—— openKylin 安装 mongodb

麒麟系统—— openKylin 安装 mongodb 一、准备工作1. 确保麒麟系统 openKylin 已经安装完毕。 二、下载解压 MongoDB二、增加环境变量三、配置MongoDB创建数据目录创建日志文件运行 四、加入到服务中 MongoDB是一款高性能、开源的NoSQL数据库&#xff0c;因其灵活的数据结构、…

机器学习:梯度下降法(Python)

LinearRegression_GD.py import numpy as np import matplotlib.pyplot as pltclass LinearRegression_GradDesc:"""线性回归&#xff0c;梯度下降法求解模型系数1、数据的预处理&#xff1a;是否训练偏置项fit_intercept&#xff08;默认True&#xff09;&…

【面试】测试开发面试题

帝王之气&#xff0c;定是你和万里江山&#xff0c;我都护得周全 文章目录 前言1. 网络原理get与post的区别TCP/IP各层是如何传输数据的IP头部包含哪些内容TCP头部为什么有浮动网络层协议1. 路由协议2. 路由信息3. OSPF与RIP的区别Cookie与Session&#xff0c;Token的区别http与…

解决Linux部署报错No main manifest attribute, in XXX.jar

这是我近期遇到的一个问题&#xff0c;报错原因就是没找到主类&#xff0c;首先你在你本地运行&#xff0c;本地运行ok的话&#xff0c;解压生成的jar包&#xff0c;里面有个META-INF文件&#xff0c;打开MANIFEST.MF文件&#xff0c;该文件是一个清单文件。该文件包含有关JAR文…

11. 双目视觉之立体视觉基础

目录 1. 深度恢复1.1 单目相机缺少深度信息1.2 如何恢复场景深度&#xff1f;1.3 深度恢复的思路 2. 对极几何约束2.1 直观感受2.2 数学上的描述 1. 深度恢复 1.1 单目相机缺少深度信息 之前学习过相机模型&#xff0c;最经典的就是小孔成像模型。我们知道相机通过小孔成像模…

汽车网络安全dos, someip

汽车Cyber Security入门之DoS 攻防 - 知乎 3、SOME/IP-TP 近年来火热地谈论下一代EE架构和SOA的时候&#xff0c;总离不开SOME/IP这个进程间通讯协议。在许多应用场景中&#xff0c;需要通过UDP传输大型的SOME/IP有效载荷。鉴于在以太网上传输数据包的大小限制&#xff0c;SO…

Linux文件管理(下)

上上篇介绍了Linux文件管理的上部分内容&#xff0c;这次继续将 Linux文件管理的剩余部分说完。内容如下。 一、查看文件内容 1、cat 命令 1.1 输出文件内容 基本语法&#xff1a; cat 文件名称主要功能&#xff1a;正序输出文件的内容。 eg&#xff1a;输出 readme.txt文…

剧本杀小程序的诞生:重塑线下娱乐的数字化未来

随着科技的不断发展&#xff0c;人们对于娱乐方式的需求也在不断升级。近年来&#xff0c;剧本杀作为一种新型的线下社交娱乐方式&#xff0c;以其独特的魅力和深度的人际互动性&#xff0c;受到了广大年轻人的喜爱。然而&#xff0c;传统的剧本杀模式存在一些问题&#xff0c;…

中间件安全

中间件安全 vulhub漏洞复现&#xff1a;https://vulhub.org/操作教程&#xff1a;https://www.freebuf.com/sectool/226207.html 一、Apache Apache(音译为阿帕奇)是世界使用排名第一的Web服务器软件。它可以运行在几乎所有广泛使用的计算机平台上&#xff0c;由于其跨平台和…

录屏软件哪个好?为您提供最佳选择(最新)

随着科技的进步&#xff0c;录屏软件已成为我们日常生活和工作中不可或缺的工具。无论是为了制作教程、会议记录还是游戏录像&#xff0c;一款优秀的录屏软件都是必不可少的。可是录屏软件哪个好呢&#xff1f;在本文中&#xff0c;我们将介绍两款常用的录屏软件&#xff0c;并…

uniapp 实现路由拦截,权限或者登录控制

背景&#xff1a; 项目需要判断token&#xff0c;即是否登录&#xff0c;登录之后权限 参考uni-app官方&#xff1a; 为了兼容其他端的跳转权限控制&#xff0c;uni-app并没有用vue router路由&#xff0c;而是内部实现一个类似此功能的钩子&#xff1a;拦截器&#xff0c;由…

鸿蒙(HarmonyOS)项目方舟框架(ArkUI)之CheckboxGroup组件

鸿蒙&#xff08;HarmonyOS&#xff09;项目方舟框架&#xff08;ArkUI&#xff09;之CheckboxGroup组件 一、操作环境 操作系统: Windows 10 专业版、IDE:DevEco Studio 3.1、SDK:HarmonyOS 3.1 二、CheckboxGroup组件 提供多选框组件&#xff0c;通常用于某选项的打开或关…

Apollo Cyber RT:引领实时操作系统在自动驾驶领域的创新

&#x1f3ac; 鸽芷咕&#xff1a;个人主页 &#x1f525; 个人专栏:《linux深造日志》《粉丝福利》 ⛺️生活的理想&#xff0c;就是为了理想的生活! ⛳️ 推荐 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下…

【服务器】宝塔面板的使用手册

目录 &#x1f337;概述 &#x1f33c;1. 绑定域名 &#x1f33c;2. 添加端口 &#x1f33c;3. 安装docker配置docker​​​​​​​ &#x1f33c;4. 软件商店 &#x1f33c;5. 首页 &#x1f337;概述 宝塔面板的安装教程&#xff1a;【服务器】安装宝塔面板 &#x1f…

绘制太极图 - 使用 PyQt

大家好&#xff01;今天我们将一起来探讨一下如何使用PyQt&#xff0c;这是一个强大的Python库&#xff0c;来绘制一个传统的太极图。这个图案代表着古老的阴阳哲学&#xff0c;而我们的代码将以大白话的方式向你揭示它的奥秘。 PyQt&#xff1a;是什么鬼&#xff1f; 首先&a…

Modelarts零代码体验,一键实现工地钢筋盘点,建筑提效新思维

前言 最近家附近的好几块地&#xff0c;同时在进行房产开发建设&#xff0c;早晚都能看到建筑师傅们在忙碌。 某天&#xff0c;夜跑中&#xff0c;发现前方的建筑工地&#xff0c;师傅们忙活的热火朝天&#xff0c;塔吊也在吊运钢筋中。 准备绕路的时候&#xff0c;旁边负责…

解锁创意无限:Adobe Photoshop 2023(PS2023)引领设计革命

Adobe Photoshop 2023 (PS2023)&#xff0c;作为图像处理软件的翘楚&#xff0c;以其卓越的性能和无限的可能性&#xff0c;继续引领着数字创意设计的潮流。对于设计师、摄影师、艺术家以及那些对视觉效果有高要求的人们来说&#xff0c;PS2023无疑是他们的必备工具。 在PS202…

web前端项目-实现录音功能【附源码】

录音功能 运行效果&#xff1a;本项目可实现录音软件的录音、存储、播放等功能 HTML源码&#xff1a; &#xff08;1&#xff09;index.html&#xff1a; <!DOCTYPE html> <html><head><meta http-equiv"Content-Type" content"text/h…

算法基础课-数据结构

单链表 题目链接&#xff1a;826. 单链表 - AcWing题库 思路&#xff1a;AcWing 826. 单链表---图解 - AcWing 需要注意的点在于理解ne[idx] head&#xff0c;idx表示当前的点&#xff0c;意思是将当前的点链到头结点的后面&#xff0c;再将头结点链在当前idx的前面。 #inc…