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

news2024/9/25 13:19:24

文章目录

      • 变量
        • 变量的声明
        • 变量命名规则
        • 变量的类型
      • 常量
        • 常量的定义与初始化
        • 字面量常量
        • 整型常量
        • 浮点型常量
        • 字符常量
        • 常量表达式(`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; // 从标准输入读取用户输入的值,并将其赋给变量radius

    area = PI * radius * radius; // 计算圆的面积,公式为PI*radius^2

    // 向标准输出打印圆的面积,使用 << 运算符将文本和变量值发送到cout
    std::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.coloradmin.cn/o/1415046.html

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

相关文章

软考之项目管理

一、考点分布 盈亏平衡分析&#xff08;※&#xff09;进度管理&#xff08;※※※&#xff09;软件质量管理&#xff08;※※&#xff09;软件配置管理&#xff08;※※&#xff09; 二、盈亏平衡分析 正常情况下&#xff0c;销售额固定成本可变成本税费利润 盈亏平衡下&#…

微信朋友圈新功能:多账号同步发圈,定时发圈!

​你是否会有这种烦恼 想要发布一条朋友圈&#xff0c;但是却因为忙着搞其他事情无暇顾及&#xff0c;甚至忘记了需要发布朋友圈这个事情&#xff1f; 有多个微信号想要同时为它们发布同一条内容的朋友圈&#xff0c;但又不想要分别登录进去进行操作&#xff1f; 你是否厌倦了每…

算法刷题:p1387 最大正方形

解题思路&#xff1a; 利用动态规划的思想设置一个标记数组flag[][]&#xff0c;flag[i][j]用来记录矩阵op[][]中以op[i][j]为右下角的子矩阵中最大的正方形边长&#xff0c;那么动态方程就是 flag[i][j]min(flag[i-1][j],min(flag[i-1][j-1],flag[i][j-1]))1;左侧和上方以及左…

Java基础—面向对象OOP—17类与对象(创建、构造器、创建对象时简单内存分析)

把握重点&#xff0c;重点已标注&#xff0c;这篇笔记分了4个章节&#xff0c;重点看二、三、四 一、整体思维--重点把握面向对象的本质和特点 1、面向对象编程OOP&#xff1a; Object-Oriented programming 2、面向过程与面向对象 面向过程&#xff1a;线性思维 面向对象…

k8s从初识到上天系列第二篇:kubernetes的组件和架构

&#x1f609;&#x1f609; 欢迎加入我们的学习交流群呀&#xff01; ✅✅1&#xff1a;这是孙哥suns给大家的福利&#xff01; ✨✨2&#xff1a;我们免费分享Netty、Dubbo、k8s、Mybatis、Spring、SpringSecurity、Docker、Grpc、各种MQ、Rpc、SpringCloud等等很多应用和源码…

【word visio绘图】关闭visio两线交叉的跳线(跨线)

【visio绘图】关闭visio两线交叉的跳线&#xff08;跨线&#xff09; 1 如何在Visio绘图中关闭visio两线交叉的跳线&#xff08;跨线&#xff09;第一步&#xff1a;打开Visio并创建您的图形第二步&#xff1a;绘制您的连接线第三步&#xff1a;关闭跳线第四步&#xff1a;手动…

用友U8接口-获取token数据字段(2)

概括 本文的操作需要正确部署U8HttpApi &#xff0c;绑定IIS端口获取erp账套信息获取token访问令牌传入JSON的参数如何设置 账套数据库 方式一 查看数据库&#xff0c;UFDATA开头的 方式二 调用接口 此接口返回所有erp账套数据库信息 Token 访问有鉴权的接口&#x…

Python 语法及入门 (超全超详细) 专为Python零基础 一篇博客让你完全掌握Python语法

前言&#xff1a; 本篇博客超级详细&#xff0c;请尽量使用电脑端结合目录阅读 阅读时请打开右侧 “只看目录” 方便阅读 一、什么是Python 1.1 Python的诞生 1989年&#xff0c;为了打发圣诞节假期&#xff0c;Gudio van Rossum吉多 范罗苏姆&#xff08;龟叔&#xff09;决…

Javaweb之SpringBootWeb案例本地存储的详细解析

2.2 本地存储 前面我们已分析了文件上传功能前端和后端的基础代码实现&#xff0c;文件上传时在服务端会产生一个临时文件&#xff0c;请求响应完成之后&#xff0c;这个临时文件被自动删除&#xff0c;并没有进行保存。下面呢&#xff0c;我们就需要完成将上传的文件保存在服…

BAT学习笔记:详解环境变量及其所有创建方法

文章目录 一、初识环境变量二、什么是环境变量三、为什么需要环境变量四、环境变量的分类五、环境变量的设置 一、初识环境变量 1.windows 的搜索框中输入 查看高级系统设置。点击打开系统属性窗口。 2. 在系统属性窗口中&#xff0c;点击右下方的“环境变量”打开环境变量设…

计算机找不到ucrtbased.dll无法运行程序,分享5种有效的解决方法

当计算机系统在运行过程中无法找到ucrtbased.dll这个特定的动态链接库文件时&#xff0c;可能会引发一系列的问题和故障现象。ucrtbased.dll是Windows操作系统中一个至关重要的组件&#xff0c;它包含了C运行时库的核心函数&#xff0c;对于许多应用程序特别是基于Microsoft Vi…

log4cplus开源库使用

log4cplus 的github地址&#xff1a;https://github.com/log4cplus/log4cplus 下载链接&#xff1a;log4cplus - Browse /log4cplus-stable/2.0.7 at SourceForge.net 官方文档&#xff1a;log4cplus / Wiki / Home 1.log4cplus配置 &#xff08;1&#xff09;打开解决方案…

滴水逆向三期笔记与作业——02C语言——10 Switch语句反汇编

滴水逆向三期笔记与作业——02C语言——10 Switch语句反汇编 一、Switch语句1、switch语句 是if语句的简写2、break加与不加有什么特点?default语句可以省略吗&#xff1f;3、游戏中的switch语句&#xff08;示例&#xff09;4、添加case后面的值&#xff0c;一个一个增加&…

故障树分析蒙特卡洛仿真程序(附MATLAB完整代码)

故障树是一种特殊的倒立树状逻辑因果关系图&#xff0c;它用事件符号、逻辑门符号和转移符号描述系统中各种事件之间的因果关系&#xff0c;通过对引起系统故障的各种因素进行逻辑因果分析&#xff0c;确定导致故障发生的各种可能的原因&#xff0c;并通过定性和定量分析找出系…

如何限制 IP 多次重新访问

随着互联网的快速发展&#xff0c;网络安全问题日益突出。恶意 IP 多次重新访问是一种常见的手段&#xff0c;可能导致服务器负载过高、资源浪费、网站响应速度下降等问题。为了提高网络安全性&#xff0c;我们需要采取有效的措施来限制恶意 IP 的多次重新访问。下面简单的介绍…

Linux下安装openresty

Linux下安装openresty 十一、Linux下安装openresty11.1.概述11.2.下载OpenResty并安装相关依赖&#xff1a;11.3.使用wget下载:11.4.解压缩:11.5.进入OpenResty目录:11.6.编译和安装11.7.进入OpenResty的目录&#xff0c;找到nginx&#xff1a;11.8.在conf目录下的nginx.conf添…

C++笔记之作用域解析符::和命名空间、作用域的关系

C++笔记之作用域解析符::和命名空间、作用域的关系 —— 杭州 2024-01-26 code review 文章目录 C++笔记之作用域解析符::和命名空间、作用域的关系1.`命名空间`和`作用域`两个术语的联系和区别命名空间(Namespace)作用域(Scope)联系与区别2.`作用域解析符::`和`命名空间`…

分段函数线性化方法matlab测试

目录 1 使用0-1变量将分段函数转换为线性约束 2 连续函数采用分段线性化示例 3 matlab程序测试 4 matlab测试结果说明 5 分段线性化应用 1 使用0-1变量将分段函数转换为线性约束 2 连续函数采用分段线性化示例 3 matlab程序测试 clc;clear all; gn10;tn1; x_pfsdpvar(1, t…

桥接模式解析

桥接模式 意图 将抽象与其实现相分离&#xff0c;使得两者可以独立变化。 解释 案例&#xff1a;考虑武器有不同的特效&#xff0c;你想让不同的武器可以有不同的特效&#xff0c;你应该怎么做&#xff1f; 为每个武器创建不同的副本使得有不同的特效&#xff0c;还是你只单独…

记录一道ctf web题

0x00 前言 某同学发在群里一道不知道什么ctf的web题 0x01 bypass open_basedir 开始没想那么多&#xff0c;看到了可以执行phpinfo&#xff0c;直接先eval一个一句话上去看看什么情况&#xff1a; 接着发现了没有权限去读取/var/www/html以外的目录&#xff0c;那么我开始想的…