枚举
如果一个变量只有几种可能的值,可以把它定义成枚举类型。所谓“枚举”,顾名思义,就是把这种类型数据可取的值一一列举出来。一个枚举型变量取值仅限于列出值的范围。
例如,定义一个枚举类型weekday:
enum weekday{Mon,Tue,Wed,Thu,Fri,Sat,Sun};
然后定义一个枚举类型变量today:
enum weekday today;
此后,today这个变量就只能取Mon,Tue,Wed,Thu,Fri,Sat,Sun的某一个值了。
我们可以让today等于Mon:
today=Mon;
也可以判断today是否等于Mon:
if(today==Mon)
...
例子
#include <iostream>
enum Weekday {
MONDAY,
TUESDAY,
WEDNESDAY,
THURSDAY,
FRIDAY,
SATURDAY,
SUNDAY
};
int main() {
Weekday today = WEDNESDAY;
std::cout << "Today is ";
switch(today) {
case MONDAY:
std::cout << "Monday";
break;
case TUESDAY:
std::cout << "Tuesday";
break;
case WEDNESDAY:
std::cout << "Wednesday";
break;
case THURSDAY:
std::cout << "Thursday";
break;
case FRIDAY:
std::cout << "Friday";
break;
case SATURDAY:
std::cout << "Saturday";
break;
case SUNDAY:
std::cout << "Sunday";
break;
}
std::cout << std::endl;
return 0;
}
实际上,C编译对枚举元素实际上按整型常量处理,当遇到枚举元素列表时,编译程序就把其中第一个标识符赋0值,第二、三、…个标识符依此赋1,2,…。
就是这样:
也可以在定义枚举类型的时候,自己指定枚举元素的值:
enum weekday{Mon=1,Tue=2,Wed=3,Thu=4,Fri=5,Sat=6,Sun=7};
那枚举类型有什么用呢?
至少有两个作用:
一是增加程序的可读性;
二是限制了变量取值范围,一旦发生不能预见的错误,使变量超出限定范围,系统会自动报错,有利于我们寻找错误。