枚举简介
枚举是C语言中的基本数据类型,就是能把可能的取值一 一举例
比如:性别、星期、月份 这些情况下就可以使用枚举类型
枚举类型中的值都是常量,默认从0开始,然后依次递增1
枚举类型的定义
枚举类型的语法形式:
注意除了最后一个成员,其他成员后都加上逗号!
enum name
{
num1,
num2,
num3
};
枚举类型的定义:
//用枚举举例星期
enum Day//枚举的名称
{
Mon,
Tues,
Wed, // 枚举星期的所有可能
Thur,
Fri,
Sat,
Sun
};
- 以上定义的 enum Day 是枚举类型。
{ }中的内容是枚举类型的可能取值,也叫枚举常量。
这些可能取值最开始都是默认从0开始,一次递增1
当然在定义的时候也可以赋初值
此时从5开始依次递增
例如:
enum Sex//性别
{
MALE = 5, //男
FEMALE, //女
SECRET //保密
};
- 后面的枚举常量是依次递增的,也可以一个一个赋值
enum Sex//性别
{
MALE = 5, //男
FEMALE = 8, //女
SECRET= 9 //保密
};
枚举的优点
- 代码的简洁性、增加代码的可读性和可维护性
枚举 enum 和 define 对标(都是定义常量)
如果不使用枚举,用 #define定义来为每个可能定义一个别名
#define MALE
#define FEMALE
#define SECRET
以枚举的方式定义:
enum sex
{
MALE;
FEMALE;
SECRET
};
- 定义性别时看起来还没什么,如果可能性比较多,比如:月份
那代码就比较多且臃肿,如果使用枚举就会很简洁,而且增加代码的可读性和可维护性
还有就是以枚举类型定义具有一定的意义
可以使用到一些程序中
enum sex
{
MALE;
FEMALE;
SECRET
};
int main()
{
enum sex a; // 定义枚举变量
a = MALE;
printf("%d",a);
return 0;
}
- 和#define定义的标识符比较枚举有类型检查,更加严谨
- 防止命名污染
- 便于调试
- 使用方便,一次可以定义多个常量
枚举的使用
enum jisuan
{
exit,//0
sum,//1
sub//2
};
int main()//可以把相对输入的数字换成名字
{ //代码阅读起来更加顺畅
int n = 0;
scanf("%d", &n);
switch (n)
{
case exit:
Exit();
break;
case sum:
Sum();
break;
case sub:
Sub();
break;
}
return 0;
}
遍历枚举类型
在C语言中枚举类型是被当做 int 或者 unsigned int 类型来处理的
所以按照 C 语言规范是没有办法遍历枚举类型的。
不过在一些特殊的情况下,枚举类型必须连续是可以实现有条件的遍历。
例如:
#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);
}
}
return 0;