C++常量与变量(2020-08-19)

概述

这里是引用
部分参考来自:https://www.cnblogs.com/MCSFX/p/11298183.html
开发工具:Visual Studio 2019
系统环境:Windows 10 专业版
常量:值不能改变
变量:值可以改变
不能重名
不能和C/C++语言里的关键字重名
必须是字母或者字母和数字的组合,符号仅“_”可以使用

命名规范

//预处理
#include <iostream>
#define cl 775
int main()
{
    const int clconst{775};
    int val {0};//变量
}

变量的定义方式

这里是引用
类型 名字 {初始值} 或者 类型 名字=初始值

常量的定义方式

直接使用值
const 类型 名字{初始值}
类型 const 名字{初始值}
#define 名字 值

区别

这里是引用
定义:const命名常量时带数据类型,而#define命名常量时不带类型。
在什么时候起作用:const在编译、运行的时候起作用,而#define是在预处理阶段起作用。
起作用的方式: define只是简单的字符串替换,没有类型检查。而const有对应的数据类型,是要进行判断的,可以避免一些低级的错误。 正因为define只是简单的字符串替换会导致边界效应,具体举例可以参考下面代码

加深const和#define的区别

//预处理
#include <iostream>
#define cl 2+2
int main()
{
    std::cout << cl / 2 << "\n";
    //按照常理应该是cl=4/2=2,但是这里表达的是2+2/2=3
}

其他

从代码调试的方便程度而言: const常量可以进行调试的,define是不能进行调试的,因为在预编译阶段就已经替换掉了
从是否可以再定义的角度而言: const不足的地方,是与生俱来的,const不能重定义,而#define可以通过#undef取消某个符号的定义,再重新定义。
从某些特殊功能而言: define可以用来防止头文件重复引用,而const不能,可以参看下面代码:
//主要把以下代码放在头文件中,可以防止头文件被重复引用
#ifndef xxx//如果没有定义xxx
#define xxx//定义xxx
//这里是你的代码
.#endif //结束如果1234567

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值