定义:枚举是 C 语言中的一种基本数据类型,用于定义一组具有离散值的常量。
优点:它可以让数据更简洁,更易读。
主要用途:枚举类型通常用于为程序中的一组相关的常量取名字,以便于程序的可读性和维护性。
定义一个枚举类型,需要使用 enum 关键字,后面跟着枚举类型的名称,以及用大括号 {} 括起来的一组枚举常量。每个枚举常量可以用一个标识符来表示,也可以为它们指定一个整数值,如果没有指定,那么默认从 0 开始递增。
例子:
| enum 枚举名 {枚举元素1,枚举元素2,……}; |
接下来我们举个例子,比如:一星期有 7 天,如果不用枚举,我们需要使用 #define 来为每个整数定义一个别名
1 2 3 4 5 6 7
| #define MON 1 #define TUE 2 #define WED 3 #define THU 4 #define FRI 5 #define SAT 6 #define SUN 7
|
这样子你是不是觉得很麻烦,作为一个大懒虫,我们的原则就是能少一个符号就少一个符号。所以上枚举!!!!!
1 2 3 4
| enum DAY { MON=1, TUE, WED, THU, FRI, SAT, SUN };
|
两个对比了一下,用上了枚举是不是整个人都舒服了不少。
注意:第一个枚举成员的默认值为整型的 0,后续枚举成员的值在前一个成员上加 1。我们在这个实例中把第一个枚举成员的值定义为 1,第二个就为 2,以此类推。
可以在定义枚举类型时改变枚举元素的值:
1
| enum season {spring, summer=3, autumn, winter};
|
没有指定值的枚举元素,其值为前一元素加 1。也就说 spring 的值为 0,summer 的值为 3,autumn 的值为 4,winter 的值为 5
枚举变量的定义
前面我们只是声明了枚举类型,接下来我们看看如何定义枚举变量。
我们可以通过以下三种方式来定义枚举变量
1、先定义枚举类型,再定义枚举变量
1 2 3 4 5
| enum DAY { MON=1, TUE, WED, THU, FRI, SAT, SUN }; enum DAY day;
|
2、定义枚举类型的同时定义枚举变量
1 2 3 4
| enum DAY { MON=1, TUE, WED, THU, FRI, SAT, SUN } day;
|
3、省略枚举名称,直接定义枚举变量
1 2 3 4
| enum { MON=1, TUE, WED, THU, FRI, SAT, SUN } day;
|
例题:猜猜下面这个实例输出的结果是:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| #include <stdio.h> enum DAY { MON=1, TUE, WED, THU, FRI, SAT, SUN }; int main() { enum DAY day; day = WED; printf("%d",day); return 0; }
|
答案:
在C 语言中,枚举类型是被当做 int 或者 unsigned int 类型来处理的,所以按照 C 语言规范是没有办法遍历枚举类型的。
不过在一些特殊的情况下,枚举类型必须连续是可以实现有条件的遍历。
以下实例使用 for 来遍历枚举的元素:
1 2 3 4 5 6 7 8 9 10 11 12 13
| #include <stdio.h> enum DAY { MON=1, TUE, WED, THU, FRI, SAT, SUN } day; int main() { for (day = MON; day <= SUN; day++) { printf("枚举元素:%d \n", day); } }
|
| 以上实例输出结果为: |
| 枚举元素:1 |
| 枚举元素:2 |
| 枚举元素:3 |
| 枚举元素:4 |
| 枚举元素:5 |
| 枚举元素:6 |
| 枚举元素:7 |
枚举在 switch 中的使用:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
| #include <stdio.h> int main() {
enum color { red =1, green, blue };
int favorite_color;
printf("请输入你喜欢的颜色: (1. red, 2. green, 3. blue): "); scanf_s("%u", &favorite_color);
switch (favorite_color) { case red: printf("你喜欢的颜色是红色"); break; case green: printf("你喜欢的颜色是绿色"); break; case blue: printf("你喜欢的颜色是蓝色"); break; default: printf("你没有选择你喜欢的颜色"); }
return 0; }
|
以上实例输出结果为:
| 请输入你喜欢的颜色: (1. red, 2. green, 3. blue): 1 |
| 你喜欢的颜色是红色 |
将整数转换为枚举
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
| #include <stdio.h> #include <stdlib.h> int main() { enum day { saturday, sunday, monday, tuesday, wednesday, thursday, friday } workday; int a = 1; enum day weekend; weekend = ( enum day ) a; printf("weekend:%d",weekend); return 0; }
|
以上就是关于枚举类型的相关知识点,thanks.