首先为什么要用enum 呢?
来看这个例子:
enum { CLUBS, DIAMONDS, HEARTS, SPADES} SUIT;
我们知道枚举默认的值是首值为0并依次加1,所以我们就清楚的用0,1,2,3代替了牌的四种花色,而且枚举是一开始就要定义好的,所以不能到了后面需要加一个数值“5”的时候又声明一个变量这样处理,因此枚举也就让我们一目了然的知道了“牌只有4种花色”,到了后面要使用这四种花色时,只要用枚举时的常量名就可以了(一般我们都会给它定义一个有意义的常量名)相比如此,也可以使用宏来定义:
#define SUIT int
#define CLUBS 0
#define DIAMONDS 1
#define HEARTS 2
#define SPADES 3
但是宏是替换,在预编译时期就已经被替换掉了,我们在调试的时候就没办法使用这些有意义的名字了。
而一开始我们可能想到的更多的是这样:
int CLUBS = 0, DIAMONDS = 1, HEARTS = 2, SPADES = 3;
可以看的到这样是与枚举差不多的,但是由于开始讲到的灵活性,我们不知道有多少种,所以在可读性上就会差很多了,而且,可以给一整个枚举命名,enum { CLUBS, DIAMONDS, HEARTS, SPADES} SUIT;这里的枚举就叫SUIT,所以在后面就可以区分为SUIT S1,S2这样创建多个同类型的枚举变量了。
此外,还可以这样用:
#include<stdio.h>
int main()
{
enum { CLUBS = 3, DIAMONDS, HEARTS, SPADES} SUIT;
printf("enum are \n%d \n%d \n%d \n%d\n",CLUBS, DIAMONDS, HEARTS, SPADES);
return 0;}
输出将会是这样:
enum are
34
5
6
可以看得出,依旧是依次递增,所以命名多个连续递增的常量时,用枚举会简洁很多。