前面教程汇总
第一讲
第二讲
第三讲
第四讲
第五讲
第六讲
第七讲
枚举类型
枚举是C语言和C++中的基本数据类型,就是能把可能的取值一一举例。比如:性别、星期、月份,这些情况下就可以使用枚举类型。
枚举类型的定义
枚举类型的语法形式:
enum 枚举名称
{
枚举元素1;
枚举元素2;
......
枚举元素n //不带符号
};
枚举类型的定义:
//用枚举举例星期
enum Day //枚举的名称
{
Mon,
Tues,
Wed, // 枚举星期的所有可能
Thur,
Fri,
Sat,
Sun
};
以上定义的 enum Day
是枚举类型。
{ }
中的内容是枚举类型的可能取值,也叫枚举常量。
这些可能取值最开始都是默认从0开始,一次递增1。
当然在定义的时候也可以赋初值,例如:
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 Day//用枚举定义星期
{
Mon = 1, //初始化为1
Tues,
Wed,
Thur,
Fri,
Sat,
Sun
};
int main()
{
printf("%d\n", Mon);
printf("%d\n", Tues);
printf("%d\n", Wed);
printf("%d\n", Thur);
printf("%d\n", Fri);
printf("%d\n", Sat);
printf("%d\n", Sun);
return 0;
}
遍历枚举类型
在C语言和C++中枚举类型是被当做 int
或者 unsigned int
类型来处理的
所以按照 C 语言和C++规范是没有办法遍历枚举类型的。
不过在一些特殊的情况下,枚举类型必须连续是可以实现有条件的遍历。
例如:
#include <cstdio>
using namespace std;
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;
}
关于枚举还有很多使用场景,需要慢慢体会。