c语言小技巧:枚举
enum weekday { sun,mou,tue,wed,thu,fri,sat }; 枚举类型在使用中有以下规定:
- 1. 枚举值是常量,不是变量。不能在程序中用赋值语句再对它赋值。例如对枚举weekday的元素再作以下赋值: sun=5;mon=2;sun=mon; 都是错误的。
- 2. 枚举元素本身由系统定义了一个表示序号的数值,从0 开始顺序定义为0,1,2…。如在weekday中,sun值为0,mon值为1, …,sat值为6。
- 3. 只能把枚举值赋予枚举变量,不能把元素的数值直接赋予枚举变量。如: a=sum;b=mon; 是正确的。而: a=0;b=1; 是错误的。如一定要把数值赋予枚举变量,
- 则必须用 强制类型转换,如: a=(enum weekday)2;其意义是将顺序号为2的枚举元素赋予枚举变量a,相当于: a=tue;
- 4.特殊应用:
- 因为枚举值是常量,所以可以使用枚举值来定义数组。例如:
-
typedef enum {PERIOD_T15m = 0,PERIOD_T24h,PER_PERIOD_NUM} PerPeriod;
- 那么我们就可以使用枚举值来定义数组了:
-
unsigned char trip_en[PER_PERIOD_NUM];
-
-
同样引用数组元素方法如下:trip_en[PERIOD_T15m],trip_en[PERIOD_T24h]。