首页 > 编程知识 正文

c语言定义宏常量,c语言中const常量的作用是什么

时间:2023-05-04 20:50:30 阅读:272832 作者:4172

说明:(个人总结,有不对之处,还望指正)

常量

常量是固定值,在程序执行期间不会改变。这些固定的值,又叫做字面量。

常量可以是任何的基本数据类型,比如整数常量、浮点常量、字符常量,或字符串字面值,也有枚举常量。

常量就像是常规的变量,只不过常量的值在定义后不能进行修改。

常用的一些常量表示,如:

名称值含义PI3.14159 265表示 π π π 的值为常量e2.71828自然底数 e e e 的值N一个自然数可以用来定义数组长度exp1e-6一般表示循环的终止条件 10 10 10 − 6 -6 −6在 C语言 中,有两种简单的定义常量的方式: 使用 #define 预处理器。使用 const 关键字。 1. 使用关键字( const ) 声明格式:

const type variable = value;

案例:常量定义数组的长度 const int N=10;int a[N]; 注意点 (说明)
①:语句 const int N=10;也可以写成 int const N=10; 但是我个人推荐使用前一种表达方式。 2. 宏定义( define ) #include<stdio.h>#define PI 3.1415926f //注意:不能以分号(;)结尾int main(){printf("%f",PI);return 0;} 注意点 (说明)
①:该定义不能以分号结尾;否则报错;
②:#define没有数据类型,只是单纯的替换
③:define可以带参数进行宏的定义,如下代码: #include<stdio.h>//注意:带参数的宏定义#define SUM(a,b) a+b #define MAX(a,b) a>b?a:bint main(){int result=SUM(6,7);printf("%dn",result);//result=13result=MAX(3,9);printf("%dn",result);//result=9result=MAX(16,14);printf("%dn",result);//result=16return 0;} 易错点 (说明)
正如上述第二点所说:#define没有数据类型,只是单纯的替换
所以思考以下代码的值: #include<stdio.h>#define SUM(a,b) a+b int main(){int result=SUM(2,2)*SUM(3,4);printf("%dn",result);//result=12return 0;}

您可能会怀疑这个值不是12,因为 ( 2 + 2 ) ∗ ( 3 + 4 ) = 28 ≠ 12 (2+2)* (3+4)= 28 ≠12 (2+2)∗(3+4)=28̸​=12,但事实确是12。
原因就在于define定义的内容只会是单纯的替换,上述表达式实际上是 2 + 2 ∗ 3 + 4 = 2 + 6 + 4 = 12 2+2*3+4=2+6+4=12 2+2∗3+4=2+6+4=12。

两种方式的比较: 1.宏定义是在编译之前进行的,而const是在编译阶段处理的2.宏定义不占用内存单元,而const定义的常量占用内存单元3.宏定义没有具体的数据类型,而const有具体的数据类型4.宏定义可以带参数进行定义,而const不能带参数定义 参考文章 https://www.cnblogs.com/blueberry006/p/7822347.htmlhttp://www.cnblogs.com/jiajinghai/archive/2011/11/08/2241107.htmlhttps://blog.csdn.net/grey_csdn/article/details/62549564

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。