当前位置:首页 > C++目录 > 正文内容

C++ 中的常量

亿万年的星光2个月前 (01-08)C++目录216

一、说明

常量和变量是相对的概念 —— 变量是 “能变化的量”,而常量就是一旦定义就固定不变、不能修改的值。


用生活里的例子类比,你就能秒懂为什么需要常量:本质是 “给固定不变的东西贴‘只读标签’,避免误改、保证数据一致性”,没有这玩意儿,关键的固定值容易被意外修改,导致程序出错。


例子 1:身份证号(固定唯一的核心数据)


【没有常量的情况】:如果把身份证号存在普通本子上(变量),不小心写错成别人的号码,去办业务就会出错;要是多人共用这个本子,还可能被其他人随意涂改。

【有常量的情况】:把身份证号印在身份证卡片上(常量),卡片上的号码无法修改,无论谁用、什么时候用,都是同一个正确的号码 —— 这就是常量的 “不可修改性”,保证核心固定数据不被篡改。

例子 2:教室的固定座位号(不可更改的标识)


【没有常量的情况】:学生随便改座位号,上课点名时 “3 号座位” 可能坐的是 8 号同学,秩序全乱。【有常量的情况】:座位号用刻字或固定贴纸(常量),不能随意涂改,老师点 3 号座位就一定能找到对应的同学 —— 常量就是程序里 “刻死” 的固定值,不会被意外修改。

例子 3:数学中的 π(固定不变的常量)


【没有常量的情况】:每次计算都手写 3.14,有时写成 3.1415,有时写成 3.1,计算结果偏差大。

【有常量的情况】:定义一个常量 PI=3.1415926,所有计算都用这个常量,不管算多少个圆的面积,π 的值都不变,结果精准。

核心总结:


生活里的“不可修改的标签 固定标识”(身份证号、座位号、π),对应程序里的 “常量”—— 没有它们,固定不变的核心数据容易被误改,导致程序逻辑混乱、结果出错;

有了常量,能保证固定值的唯一性和不可修改性,让程序更稳定。

二、常量

常量就是值固定不变的量,特点是 “从一而终”,一旦定义赋值,就不能再修改。
常量的使用同样由类型决定(和变量类型一致,如 int、double、char 等),C++ 中定义常量主要有两种常用方式:

1. 使用const关键字定义(推荐)


语法格式:

const 数据类型说明符 常量名 = 常量值;
  • const是关键字,必须写在最前面

  • 常量名命名规则和变量一致,通常全大写(约定俗成,方便区分)

  • 必须定义时赋初值,不能先定义后赋值

2. 使用#define预处理指令定义


语法格式:
#define 常量名 常量值
  • 没有数据类型,也没有分号结尾

  • 本质是 “文本替换”,预处理阶段替换代码中所有对应常量名

3. 常量定义与使用的代码示例


示例 1:const 关键字定义常量

#include<iostream> 
using namespace std;
int main(){
    const int MAX_SCORE = 100;
    const double PI = 3.1415926;
    const char DEFAULT_CHAR = 'A';
    const bool IS_OPEN = true;
    const string GREETING = "Hello World";
    
    cout << "满分:" << MAX_SCORE << endl;
    cout << "圆周率:" << PI << endl;
    cout << "默认字符:" << DEFAULT_CHAR << endl;
    cout << "是否开启:" << IS_OPEN << endl;
    cout << "问候语:" << GREETING << endl;
    
    // MAX_SCORE = 90;  编译报错,const常量不能修改
    // PI = 3.14;       编译报错
    
    return 0;
}

输出结果:

满分:100
圆周率:3.14159
默认字符:A
是否开启:1
问候语:Hello World

示例 2:#define 定义常量

#include<iostream> 
using namespace std;

#define MIN_AGE 18
#define TAX_RATE 0.08
#define WARNING "输入错误!"

int main(){
    cout << "最小年龄限制:" << MIN_AGE << endl;
    cout << "税率:" << TAX_RATE << endl;
    cout << "提示信息:" << WARNING << endl;
    
    // MIN_AGE = 20;  编译报错
    
    return 0;
}

输出结果:

最小年龄限制:18
税率:0.08
提示信息:输入错误!

4. 常量使用的关键注意事项

常量必须先定义后使用,未定义直接使用会编译报错;

const常量有数据类型,编译器会做类型检查(更安全);

#define常量无类型,仅文本替换;

常量名通常全大写,方便区分变量;

关键字不能作为常量名。

5. 总结

常量是值固定不变的量,核心特点是 “不可修改”;

定义方式:const 类型 常量名=值(推荐)、#define 常量名值

常量必须定义时赋初值,命名遵循变量规则,通常全大写。



    扫描二维码推送至手机访问。

    版权声明:本文由青少年编程知识记录发布,如需转载请注明出处。

    标签: 常量const
    分享给朋友:

    相关文章

    C++ 如何隐藏光标

    在C++控制台做小游戏的时候,光标一直在闪,影响体验效果,我们可以通过下面的函数隐藏光标位置。void HideCursor(){ CONSOLE_CURSOR_INFO cu...

    2021 年青岛市程序设计竞赛试题(小学组)决赛

    2021 年青岛市程序设计竞赛试题(小学组)决赛

    1.方程求解【描述】输入正整数 a,b,c。求有多少组 x 和 y 满足 a*x+b*y=c 。x 和 y 都是非负整数。【输入】一行,包含三个正整数 a,b,c,两个整数之间用单个空格隔开。【输出】...

    如何判断回文数/回文串

    所谓回文,就是从左往右读和从右往左读都是一样的,这样的数字或者字符称为回文数/回文字符。做题的时候经常能看到判断回文操作。判断回文的一般有两种,一种是数字类型,一种是字符类型。两种分别介绍一下。一、回...

    分离整数的各个位

    分离整数的各个位

            平常做题的时候有很多时候会遇到分离整数的各个位的操作,比如求回文数,数字反转等题目。今天简单总结一下分离...

    指针(三):指针与函数

    1.交换的例子#include<iostream> #include<cstdio> #include<cstring> using namespa...

    【题解】最短路径问题

    【题目描述】平面上有n个点(n≤100),每个点的坐标均在-10000~10000之间。其中的一些点之间有连线。若有连线,则表示可从一个点到达另一个点,即两点间有通路,通路的距离为两点间的直线距离。现...