首页 > 其他 > 详细

const 与 define 的区别

时间:2021-02-19 00:31:58      阅读:35      评论:0      收藏:0      [点我收藏+]

1.编译器处理阶段

define是预处理器预处理阶段完成的

const是编译器编译运行时完成的

时间上:define早于const

2.定义上不同

define时宏定义,它最大的特点就是语义替换,它定义的常量值 没有类型限定,也不做类型检查,在宏出现的地方直接展开

const是关键字,其实就是一个only_read变量,不能更改,它会在编译时检查数据类型

3.起的作用不同

define只是替换,不会做表达式运算

#define N 1+2 //我们预想的N值是3,我们这样使用N 
double a = N/2; //我们预想的a的值是1.5,可实际上a的值是2
//实际上就是 a = 1+2/2 = 2

4.存储方式不同

define宏仅仅是展开,有多少地方使用,就展开多少次,不会分配内存。

const常量会在内存中分配(可以是堆中也可以是栈中)。

const定义的只读变量在程序运行过程中只有一份拷贝(因为它是全局的只读变量,存放在静态区),而#define定义的宏常量在内存中有若干个拷贝。

就空间效率而言:const优于define

const 与 define 的区别

原文:https://www.cnblogs.com/sjyu/p/14413964.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!