C语言枚举类型详解
文章目录
- 一. 枚举定义
- 二. 实践理解
- 三. 加强理解
- 四.强化理解
- 4.1 for循环
- 4.2 枚举与switch结合
- 4.3 枚举与显式赋值
- 4.4 枚举与数组结合
- 五 总结
一. 枚举定义
-
枚举
-
--将变量的值一一列举出来
-
每一个枚举元素由系统定义了一个用序号表示的数值,从0开始,分别为0 1 2
-
语法:
enum 枚举名{
枚举元素
};
二. 实践理解
eg:比如一周有七天,我们就可以使用枚举类型来完善代码如下:
#include "stdio.h"
enum weekday{
mon,tue,wed,thu,fri,sat,sun
};
int main(){
enum weekday one; //枚举声明
printf("%d ",one); //默认指向第一个元素
enum weekday two;
two = wed;
printf("%d ",two);
return 0;
}
在这儿输出来的结果就可以得出我们的代码最后输出:
0 2
这也就说明我们最后输出的是整型.
- 注意:
- 如果你不想是0开始,可以把mon赋值1或者每一次输出加1
#include "stdio.h"
enum weekday{
mon=1,tue,wed,thu,fri,sat,sun
};
int main(){
enum weekday one=mon;
printf("%d ",one); //默认指向第一个元素
enum weekday two;
two = wed;
printf("%d ",two);
return 0;
}
输出结果:
1 3
三. 加强理解
前面我们学过结构体的代码和编写结构体代码,不懂结构体点击这儿我们声明的时候都是:
c结构体 结构体类型 结构体变量名;
这就很麻烦;同时我们也不难发现,在枚举的过程中也是一样的,就会显得相当麻烦,因此我们要上升强度,我们要使用我们以前所用到过的typedef关键字来改一个名字
代码如下:
#include "stdio.h"
typedef enum {
mon,tue,wed,thu,fri,sat,sun
}weekday;
int main(){
weekday one;
printf("%d ",one); //默认指向第一个元素
weekday two;
two = wed;
printf("%d ",two);
return 0;
}
不难发现,使用typedef关键字后我们的更容易理解代码了;
四.强化理解
4.1 for循环
题目:定义一个表示颜色的枚举类型,并输出每种颜色对应的整数值。
#include <stdio.h>
enum Color {
RED, // 0
GREEN, // 1
BLUE // 2
};
int main() {
enum Color c;
// 遍历枚举值
for (c = RED; c <= BLUE; c++) {
printf("颜色值: %d\n", c);
}
return 0;
}
结果:
颜色值: 0
颜色值: 1
颜色值: 2
4.2 枚举与switch结合
题目:定义一个表示星期的枚举类型,根据输入的枚举值输出对应的星期名称。
#include <stdio.h>
enum Weekday {
MON, TUE, WED, THU, FRI, SAT, SUN
};
int main() {
enum Weekday today;
today = WED; // 假设今天是星期三
switch (today) {
case MON:
printf("星期一\n");
break;
case TUE:
printf("星期二\n");
break;
case WED:
printf("星期三\n");
break;
case THU:
printf("星期四\n");
break;
case FRI:
printf("星期五\n");
break;
case SAT:
printf("星期六\n");
break;
case SUN:
printf("星期日\n");
break;
default:
printf("无效的枚举值\n");
}
return 0;
}
结果:
星期三
4.3 枚举与显式赋值
题目:定义一个表示 HTTP 状态码的枚举类型,包括 200、404、500,并输出状态码对应的含义。
#include <stdio.h>
enum Status {
OK = 200,
NOT_FOUND = 404,
SERVER_ERROR = 500
};
int main() {
enum Status status;
status = NOT_FOUND; // 假设当前状态是 404
switch (status) {
case OK:
printf("请求成功\n");
break;
case NOT_FOUND:
printf("资源未找到\n");
break;
case SERVER_ERROR:
printf("服务器错误\n");
break;
default:
printf("未知状态码\n");
}
return 0;
}
结果:
资源未找到
4.4 枚举与数组结合
题目:定义一个表示季节的枚举类型,并将其与字符串数组结合,输出对应季节的名称。
#include <stdio.h>
enum Season {
SPRING, SUMMER, AUTUMN, WINTER
};
int main() {
const char *seasonNames[] = {"春天", "夏天", "秋天", "冬天"};
enum Season season = AUTUMN; // 假设当前是秋天
printf("当前季节是:%s\n", seasonNames[season]);
return 0;
}
结果:
当前季节是:秋天
五 总结
枚举的作用:提高代码可读性,为一组整数值赋予有意义的名称。
枚举的特点:默认从 0 开始递增,支持显式赋值,本质上是整数。
枚举的使用场景:表示有限的状态、类型或选项,如星期、季节、状态码等。
伙伴们可以自己感受一下;创作不易,多多支持.