版权声明:本文由 Micheal 超 博客 创作,转载请附带链接,有问题欢迎交流。 https://blog.csdn.net/qq_42887760/article/details/85125180
说明:(个人总结,有不对之处,还望指正)
常量
-
常量是固定值,在程序执行期间不会改变。这些固定的值,又叫做字面量。
-
常量可以是任何的基本数据类型,比如整数常量、浮点常量、字符常量,或字符串字面值,也有枚举常量。
-
常量就像是常规的变量,只不过常量的值在定义后不能进行修改。
常用的一些常量表示,如:
名称 | 值 | 含义 |
---|---|---|
PI | 3.14159 265 | 表示 的值为常量 |
e | 2.71828 | 自然底数 的值 |
N | 一个自然数 | 可以用来定义数组长度 |
exp | 1e-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:b
int main(){
int result=SUM(6,7);
printf("%d\n",result);//result=13
result=MAX(3,9);
printf("%d\n",result);//result=9
result=MAX(16,14);
printf("%d\n",result);//result=16
return 0;
}
- 易错点 (说明)
正如上述第二点所说:#define没有数据类型,只是单纯的替换
所以思考以下代码的值:
#include<stdio.h>
#define SUM(a,b) a+b
int main(){
int result=SUM(2,2)*SUM(3,4);
printf("%d\n",result);//result=12
return 0;
}
您可能会怀疑这个值不是12,因为
,但事实确是12。
原因就在于define定义的内容只会是单纯的替换,上述表达式实际上是
。
两种方式的比较:
- 1.宏定义是在编译之前进行的,而const是在编译阶段处理的
- 2.宏定义不占用内存单元,而const定义的常量占用内存单元
- 3.宏定义没有具体的数据类型,而const有具体的数据类型
- 4.宏定义可以带参数进行定义,而const不能带参数定义