下面我用比较通俗易懂的方法来一起简单总结一下常量的知识。
常量
C语言中的常量分为以下几种:
- 字面常量
- Const修饰的常变量
- #define定义的标识符常量
- 枚举常量
字面常量
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main()
{
1234;//整型常量
3.14;//浮点型常量
"abcde";//字符串常量
'e';//字符常量
//这些都叫字面常量
return 0;
}
Const修饰的常变量
const——常属性
如下
我这样写,n的值可以更改
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main()
{
int n = 1;
n = 2;
printf("%d", n);
return 0;
}
n由1变成了2;
但我如果在int前加一个const,
int main()
{
const int n = 1;//初始化后不能再被更改
n = 2;
printf("%d", n);
return 0;
}
下面的错误列表则会显示
说明n被const修饰后其值不能改变。
那么n完全就是常量的样子了呀,为什么会还称它是常变量呢?
我们来看下面这个例子,证明它是一个变量:
这里,可以看到,下面的错误列表显示24行代码里的m必须是一个常量,那么反过来,也就表示,m在这里是一个变量。
说明一下:
我用的是VS2019,在C99标准之前,数组的大小只能是常量,VS2019对C99有些部分不支持。不支持变长数组(用整型变量或表达式声明或定义的数组),所以这里报错了。
现在,我在int前面加上一个const,结果如下
说明此时m虽然被const修饰,但m仍是一个变量。
#define定义的标识符常量
#include<stdio.h>
#define MAX 10
int main()
{
printf("%d\n", MAX);
return 0;
}
输出10.
现在,我要改变MAX的值
#include<stdio.h>
#define MAX 10
int main()
{
printf("%d\n", MAX);
MAX=20;
printf("%d\n", MAX);//MAX不能修改;
return 0;
}
报错,证明MAX的值不能改变。
因为MAX被标识成了常量。
所以此时,MAX就可以做为数组大小
#include<stdio.h>
#define MAX 5
int main()
{
int arr[MAX] = { 0 };
return 0;
}
这样写,就没有任何问题了。
枚举常量
enum——枚举关键字
枚举语法的定义格式为:
enum 枚举名 {枚举元素1,枚举元素2,……};//注意后面有一个分号
举个栗子,例如:一周有 7 天,如果不用枚举,我们就需要使用 #define 来给每个整数定义一个别名:
#define MON 1
#define TUE 2
#define WED 3
#define THU 4
#define FRI 5
#define SAT 6
#define SUN 7
如果用枚举的方式,如下:
enum DAY
{
MON=1, TUE, WED, THU, FRI, SAT, SUN//里面这些称为枚举常量
};
看起来是不是简洁很多。
注意:第一个枚举成员的默认值为整型的 0,后续枚举成员的值在前一个成员上加 1。我们在这个实例中把第一个枚举成员的值定义为 1,第二个就为 2,以此类推。
我们也可以在定义枚举类型时改变枚举元素的值:
enum DAY
{
MON, TUE=2, WED, THU, FRI, SAT, SUN
};
没有指定值的枚举元素,其值为前一元素加 1。也就说MON的值为 0,THU的值为 2,WED的值为3,THU 的值为 4,FRI 的值为 5,依次类推。
上面我们只是声明了枚举类型,下面我们要来定义枚举变量。
可以通过以下的方式来定义枚举变量
- 1、先定义枚举类型,再定义枚举变量day
enum DAY
{
MON=1, TUE, WED, THU, FRI, SAT, SUN
};
enum DAY day;
- 2、在定义枚举类型的同时定义枚举变量day
enum DAY
{
MON=1, TUE, WED, THU, FRI, SAT, SUN
} day;
- 3、省略枚举名称,直接定义枚举变量
enum
{
MON=1, TUE, WED, THU, FRI, SAT, SUN
} day;
来个实例:
#include <stdio.h>
enum DAY
{
MON=1, TUE, WED, THU, FRI, SAT, SUN
};
int main()
{
enum DAY day;
day = THU;
printf("%d",day);
return 0;
}
输出为4.
以上为我整理的有关常量的相关知识,由于我的水平有限,如有错误,还请大家多多指出更正。
记得点赞关注支持我哦。
让我们一起加油一起成长!