枚举类型

来源:互联网 发布:打击电信网络诈骗标语 编辑:程序博客网 时间:2024/05/18 02:18
枚举类型
    对于C语言,很少有什么事只能靠枚举来完成而用#define不能解决的。对于枚举的一般形式:
                            enum 可选标签 {内容......} 可选变量定义;
其中的“内容”是一些可选标示符列表,可能有一些整型值赋给它们,它们是常量。下面是一个枚举实例:
                            enum sizes { small = 7,medium,large = 10,humungous };
                            enum sizes a,b,c,d;
缺省情况下,整型值从零开始,如果对列表中的某个标示符进行了赋值,那么紧随其后的那个标示符的值就比所附的值大1,然后类推。枚举具有一个优点:
    #define定义的名字一般在编译时被丢弃,而枚举名字则通常一直在调试器中可见,可以在调试代码时使用它们。
    用枚举来定义一类变量的用法:
                            typedef enum{MON,TUE,WED,THU,FRI,SAT,SUN}DAY;
                            DAY a,b,c,d;
对于这些变量你只能用枚举成员赋值,或者:a = (DAY)2,这样强制转换(毫无意义)。
    而如果用#define的话,你必须:
                            
#define MON  1
                            #define TUE   2
                            #define WED  3
                            #define THU   4
                            #define FRI    5
                            #define SAT   6
                            #define SUN   7
然后定义表示星期的变量:
                            int a,b,c,d; 
对于这些变量你可以附任何整型值。
可以看出枚举
比#define:1.代码比#difine少;2.变量可赋值范围被限定在有意义的范围内,表达更清晰,可读性更强。