【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.mzph.cn/news/653922.shtml

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

相关文章

C++初阶:C/C++内存管理、new与delete详解

之前结束了类与对象&#xff1a;今天进行下面部分内容的学习 文章目录 1.C/C内存分布2.C语言中动态内存管理方式&#xff1a;malloc/calloc/realloc/free3.C动态内存管理方式3.1new/delete操作内置类型3.2new和delete操作自定义类型 4.operator new与operator delete函数5.new和…

C#,数据检索算法之三元搜索(Ternary Search)的源代码

数据检索算法是指从数据集合&#xff08;数组、表、哈希表等&#xff09;中检索指定的数据项。 数据检索算法是所有算法的基础算法之一。 本文发布 三元搜索&#xff08;Ternary Search&#xff09;的源代码。 1 文本格式 using System; namespace Legalsoft.Truffer.Algo…

SpringMvc切换Json转换工具

SpringBoot切换使用goolge的Gson作为SpringMvc的Json转换工具 <!-- gson依赖 --> <dependency><groupId>com.google.code.gson</groupId><artifactId>gson</artifactId> </dependency>Configuration public class JsonWebConfig {B…

Python拼接字符串

在Python编程中&#xff0c;字符串拼接是一项常见的操作&#xff0c;它可以用于将多个字符串连接起来形成一个新的字符串&#xff0c;是处理文本数据和字符串操作的基本技巧之一。 1. 使用""运算符进行字符串拼接 最常见的字符串拼接方法是使用""运算符&…

多维时序 | Matlab实现DBO-GRU蜣螂算法优化门控循环单元多变量时间序列预测

多维时序 | Matlab实现DBO-GRU蜣螂算法优化门控循环单元多变量时间序列预测 目录 多维时序 | Matlab实现DBO-GRU蜣螂算法优化门控循环单元多变量时间序列预测效果一览基本介绍程序设计参考资料 效果一览 基本介绍 1.Matlab实现DBO-GRU蜣螂算法优化门控循环单元多变量时间序列预…

专业130+总分390+第二名中国海洋大学946信号与系统考研经验电子信息通信

今年专业946信号与系统130&#xff0c;总分390&#xff0c;专业排名第2顺利上岸中国海洋大学&#xff0c;总结一下自己的复习经验希望对大家复习有所帮助&#xff0c;每个人的学习习惯不同&#xff0c;大家要对自己有信心&#xff0c;借鉴加上自己整合&#xff0c;属于自己的才…

第十篇【传奇开心果系列】BeeWare开发移动应用示例:优质跨平台解决方案

传奇开心果博文系列 系列博文目录BeeWare开发移动应用示例系列博文目录前言一、Beeware优质跨平台实现方案三、跨平台能力示例代码和说明四、原生用户界面示例代码和说明五、强大生态系统示例代码和说明六、灵活的部署选项示例代码和说明七、归纳总结系列博文目录 BeeWare开发…

备战蓝桥杯---二分(基础)

何为二分&#xff1f;形象的说&#xff0c;就是单调函数求零点。 我们先对二分查找简单的分析一下&#xff08;主要是模板及易错点&#xff09; 1.找>x的第一个位置&#xff1a; 2.找<x的第一个位置&#xff1a; …

勒索病毒如何预防?用什么工具

勒索病毒进入服务器加密文件&#xff0c;让文件变得不能访问&#xff0c;我们经常可以见到这样的新闻&#xff0c;被勒索后没什么好的办法&#xff0c;只能交钱。 碰到言而有信的黑客还好。有时候交钱了&#xff0c;坏人也未必给你解密文件。 有什么工具可以预防这样的勒索病…

工程对接大模型流式和非流式对话底层原理解析

文章目录 前言一、非流式输出设计二、stream流式输出设计三、手撸一个流式输出项目总结 前言 之前对接过OpenAi大模型的官方API&#xff0c;可以看到它有一个Stream参数&#xff0c;设置成true的时候就是流式的对话输出&#xff0c;现象就是一段一段的往外崩。 官方手册的地址…

骑砍战团MOD开发(41)-LOD渲染技术

一.LOD技术 LOD技术&#xff0c;即Level Of Details&#xff0c;是一种在3D图形渲染中常用的技术&#xff0c;主要用于优化渲染性能。 通过在建模时添加LOD模型(低模模型,面数较少),游戏引擎通过计算模型的远近和光照等情况选择性加载原模型(高模)/LOD模型(低模),实现游戏…

html多个好看的背景动态效果(附源码)

文章目录 1.设计来源1.1 图片轮动背景1.2 星空流星背景1.3 动态美女背景1.4 动态屋雨背景1.5 动态街道背景1.6 动态夜幕背景 2.效果和源码2.1 动态效果2.2 透明度配置2.2 源代码 源码下载 作者&#xff1a;xcLeigh 文章地址&#xff1a;https://blog.csdn.net/weixin_43151418/…

交叉编译opencv运行平台rk3588

opencv版本&#xff1a;4.8.0 opencv_contrib版本&#xff1a;4.8.0 在源码目录下建build目录&#xff0c;进入该目录配置编译选项生成makefile cmake 配置参数&#xff1a; cmake -DCMAKE_MAKE_PROGRAM:PATH/usr/bin/make -DCMAKE_INSTALL_PREFIX/home/rog/my_file/other_L…

面经基础版案例(路由,请求渲染,传参,组件缓存)

文章目录 1.案例效果分析2.配置一级路由&#xff08;首页&#xff0c;详情&#xff09;3.配置二级路由4.导航高亮效果5.首页的请求渲染6.传参&#xff08;查询参数 $ 动态路由&#xff09;7.详情页渲染8.组件缓存kepp-alive9.总结 1.案例效果分析 2.配置一级路由&#xff08;首…

2001-2019年全球500米分辨率植被聚集指数CAS-CI数据分享

各位同学们好&#xff0c;今天分享的是2001-2019年全球500米分辨率植被聚集指数CAS-CI数据。如果您需要下载或处理遥感数据等方面的帮助&#xff0c;您可以私信或评论。 一、数据简介 植被聚集指数&#xff08;clumping index, CI&#xff09;是一个重要的冠层结构参数&#…

海思 tcpdump 移植开发详解

目录 前言 一、开发环境 二、tcpdump 源码下载 三、交叉编译 libpcap 四、交叉编译 tcpdump 五、tcpdump 移植到板子运行 前言 本章内容将讲解&#xff0c;如何在海思平台交叉编译、移植&#xff0c;并基于静态库生成的 tcpdump 网络抓包工具。 一、开发环境 SS…

SpringBoot整合Xxl-Job实现异步任务调度中心

目录 一、下载 1、源码 2、项目结构 3、模块说明 二、部署任务调度中心 1、创建数据库xxl-job 2、配置数据库 3、启动admin模块 4、打开任务调度中心 三、SpringBoot整合xxl-job 1、导入依赖 2、配置yml文件 3、配置类 4、启动项目 5、任务配置 6、测试 一、下…

UE5在VisualStudio升级后产生C++无法编译的问题

往期的虚幻引擎项目在VS更新后&#xff0c;编译时会报错&#xff0c;这一般出现在VS升级之后&#xff0c;UE对于VC的编译器定位没有更新导致&#xff1b; 有出现如下问题&#xff1a; 问题1&#xff1a; Running I:/EPCI/Epic Games/UE_5.3/Engine/Build/BatchFiles/Build.ba…

笔记 | mysqldump 时 --net_buffer_length 的作用

--net_buffer_length 是 mysqldump 命令中的一个选项&#xff0c;它设置了缓冲区的初始大小&#xff0c;该缓冲区用于存储SQL语句。在mysqldump操作期间&#xff0c;可能需要传输大量数据。如果单个记录&#xff08;或多个小记录&#xff09;的大小超过了这个缓冲区的大小&…

vue3+threejs+koa可视化项目——实现登录注册(第三步)

文章目录 ⭐前言&#x1f496;往期node系列文章&#x1f496;threejs系列相关文章&#x1f496;vue3threejs系列 ⭐koa后端登录注册逻辑&#xff08;jwt&#xff09;&#x1f496; koa登录注册 ⭐vue3前端登录注册权限控制&#x1f496; 登录页面&#x1f496; 注册页面 ⭐总结…