前面我分享了字面常量与const修饰的常变量,并解释了常变量的常属性与变量本质,今天我将继续介绍常量的另外两个分类——#define定义的标识符常量以及枚举常量。
#define定义的标识符常量
这个标识符常量我是这样理解的,#define他的作用等同于char这样的数据类型,只不过char定义的是变量,而且是字符变量,而#define定义的是常量,而且是标识符常量,这个标识符可以理解为就是一种代号,类似于铭牌。
下面我将用一组代码来解释:
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
//#define定义的标识符常量
#define atm 100//这里我们定义atm这个标识符为常量"100";
int main()
{
int arr[atm] = { 0 };//这里我们通过定义数值来判定atm是否为常量
return 0;
}
输入完代码后Ctrl+F5运行一下代码,结果如下:
这里可以看到代码正常运行,那说明atm这个标识符是一个常量,那这个常量数值是多少能?接下来我们利用printf函数打印一下,如图所示:
这里可以看到atm这个标识符的值为常量“100”。
接下来可能有朋友会有疑惑,这里的标识符只能是3个字符吗?接下来我们来测试一下,分别测试字符“a”、"ab"、"abcd",这里定义的值不变,还是100,接下来我们看看结果如何:
字符“a”
字符“ab”
字符“abcd”
以上3种结果都和atm的结果是一样的,由此可知,这个标识符也就是我们的字符,也是我们的变量,更是一种符号类似与我们身上穿的衣服。
这里我们可以这样去理解,今天我想穿白t出门,明天我想穿黑t出门,后天我想穿Polo衫出门,这样都是可以的,性质不变,我还是我,只是穿的衣服不同而。今天张三穿的白t,李四穿的黑t,王五穿的花衬衫,我们可以通过不同的衣服来辨认这三个人分别是谁。
通过这个例子我们来理解标识符常量,什么是标识符,这个标识符就是我们的衣服,这个常量就是不同的人,别人可以通过看这个符号来确认这个是什么常量。我相信这样去举例大家应该都能理解了。
枚举常量
下面我们通过下列代码来理解这个枚举常量:
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
//枚举常量
//枚举——也就是一一列举
//枚举关键字——enum
enum color//这里我将color这个常量给一一列举出来,分别有代码块({})里面的三个值
{
red,
yellow,
blue
};//这里的";"不能缺少
int main()
{
enum color a = red;//这里我将枚举出来的red这个值提取出来并赋值给字符a
return 0;
}
这里的字符“color”就相当于是一个零食柜,代码块里的内容就是零食柜里的零食,我们在使用这个枚举常量时方法和数据类型的使用方法相同,这里的enum color “字符(a/b/c...)” = red//这行代码的意思就是我将零食柜里的red这个零食赋予“字符(a/b/c...)”这个人,上面代码里我用的是“a”,当然你也可以根据自己的喜好去编辑不同的字符。
这里我要提一点,枚举出来的这些常量都是有固定的值,接下来我们将这些值打印出来看一下:
这里大家可以看到,我特地将blue和yellow调换了一下位置,他这里打印的结果是0/2/1,如果我们按他的顺序来打印,这里我再加一个pink,我们来看看又会是什么结果呢?如下图所示:
这时打印出来的值是0/1/2/3;
这里我们大胆尝试一下,如果这个代码块里面的是数字,又会是什么结果呢?
这里我们可以看到系统提示的是应输入标识符
综上所述,这里我们不妨总结以下几点结论:
1.枚举常量类似于一个数据库,这个数据库里面的数据是有限的,并且我们可以一一列举出来;
2.列举出来的这些数据只能是字符并且都有一个固定的值,而且这些值是从0开始排序的;
3.当我们使用这些数据时,格式类似于数据类型一样,
enum + “编写的字符” + “需要赋值的字符” + “枚举出来的数据”
到这里大家应该对#define定义的标识符常量与枚举常量又多了一种新的理解和认识了吧。
现在我已经将4种常量以自己的理解全部阐述了一遍,如果各位阅读完后对这些内容有了一种全新的理解思路的话,那编写的这些内容就有了它自己的意义。
最后感谢各位的翻阅,接下来我会随着学习的深入,继续去分享自己对这些知识的理解,咱们下一篇见。