c++中#define和const区别

1、define在编译的预处理阶段起作用,将代码中的标识符替换成常量;而const在编译、运行期间都起作用。
2、#define宏定义不带类型,const是个关键字,需要定义常量的类型。
3、#define只进行简单的字符串替换,不能进行类型检查,而const有对应的数据类型,可以减少错误。例如:


```cpp
#define N 2+3 //我们预想的N值是5,我们这样使用N
double a = N/2;  //我们预想的a的值是2.5,可实际上a的值是3.5

4、预处理后#define占用代码段空间,而const占用数据段空间。
5、const常量可以进行调试,而#define不能调试。
总的来说,const引入数据类型后,可以帮助编译器识别数据类型,这对编译器来说非常重要。而换个角度说,预处理就可以解决掉#define,而不避让编译器处理。
const相比#define的优点其实主要就两点,一是const有类型;二是const可以有不同的作用域。

此外,宏的主体是语言符号,它对于字符串的观点跟c/c++的字符串字面量是很不一样的,这会在使用中给程序员带来一些意想不到的问题。

const不足的地方,是与生俱来的,const不能重定义,而宏可以通过#undef取消某个符号的定义,再重新定义。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值