- 一、引言
- 二、代码实操
- 2.1 枚举变量的定义
- 2.2 枚举变量的遍历
- 2.3枚举在switch中的应用
- 2.4 综合应用
- 格式:enum 枚举名 {元素1,元素2,…};
一组数据,后面的比前面的值大一,如果直接使用宏定义,那么效率很低,为此,C语言中引入枚举类型。在C语言中,第一个枚举成员的默认值为整型的0,后面的值在前面的值的基础上加一
- 1.先定义枚举类型,再定义枚举变量
enum DAY{ MON = 1, TUE, WED, THU, FRI, SAT, SUN }; enum DAY day;//可以将enum DAY 看做是一种数据类型的名称 - 2.定义枚举类型的同时,定义枚举变量
enum DAY{ MON = 1, TUE, WED, THU, FRI, SAT, SUN }day; - 3.省略枚举名称,直接定义枚举变量
enum { MON = 1, TUE, WED, THU, FRI, SAT, SUN }day; - 4.代码实现:
#include
enum DAY{ MON = 1, TUE, WED, THU, FRI, SAT, SUN }; int main(){ //枚举类型被当做int或unsigned int来处理 //所以如果你定义了一个枚举类型,也可以对其 //整数相关的操作 enum DAY day; enum DAY day1; day = FRI; day1 = 1;//day1位整数,可以直接赋值 printf("%dn",day); printf("%d",day1); } - 5.运行结果:
5 1
在C语言中,枚举变量被当做整数来处理,是无法遍历的,但是,当枚举变量是顺序时,可以遍历。在C语言中,枚举类型每次都是在前面值的基础上加一,如果数值不连续,那么遍历的值就有可能比枚举元素多或者少
- 代码实现:
#include
enum DAY{ MON = 1, TUE, WED, THU, FRI, SAT, SUN=7 }; enum DAY1{ MON1 = 1, TUE1, WED1, THU1, FRI1, SAT1, SUN1=3 }; enum DAY2{ MON2 = 1, TUE2, WED2, THU2, FRI2, SAT2, SUN2=10 }; int main(){ enum DAY day; enum DAY1 day1; enum DAY2 day2; for(int day = MON; day <= SUN; day++){ printf("day变量值:%dn",day); } printf("n"); for(int day1 = MON; day1 <= SUN1; day1++){ printf("day1变量值:%dn",day1); } printf("n"); for(int day2 = MON; day2 <= SUN2; day2++){ printf("day2变量值:%dn",day2); } } - 运行结果:
day变量值:1 day变量值:2 day变量值:3 day变量值:4 day变量值:5 day变量值:6 day变量值:7 day1变量值:1 day1变量值:2 day1变量值:3 day2变量值:1 day2变量值:2 day2变量值:3 day2变量值:4 day2变量值:5 day2变量值:6 day2变量值:7 day2变量值:8 day2变量值:9 day2变量值:10
- 代码实现:
#include
enum DAY{ MON = 1, TUE, WED }; void main(){ enum DAY day; printf("请输入星期几:"); scanf("%u",&day); switch (day) { case MON: printf("周一n"); break; case TUE: printf("周二n"); break; case WED: printf("周三n"); break; default: printf("输入错误n"); break; } } - 运行结果:
d102@d102-W65KJ1-KK1:/media/d102/EPAN/Desktop/c++_ubuntu/c++_01/workspace$ gcc test1.c -o test d102@d102-W65KJ1-KK1:/media/d102/EPAN/Desktop/c++_ubuntu/c++_01/workspace$ ./test 请输入星期几:3 周三
- 代码实现:
#includevoid main() { //enum是简化了多行 #define enum DAY { MON = 1, TUE, WED=7, THU, FRI=-9, SAT, SUN } day; // 遍历枚举元素 for (day = MON; day <= SUN; day++) { printf("枚举元素:%d n", day); } printf("枚举元素:%d n", WED); day=17; //TUE=2;不可更改 printf("枚举元素:%d n", THU); printf("枚举元素:%d n", SUN); enum DAY weekend=MON; //定义后必须赋初值才能使用 printf("枚举元素:%d n", weekend); enum DAY weekend1; //默认值为0 printf("枚举元素:%d n", weekend1); printf("枚举元素:%d n", day); }



