c语言枚举类型

来源:互联网 发布:python设计模式 知乎 编辑:程序博客网 时间:2024/04/29 16:38
为什么使用枚举类型?

在一些程序中,有一些变量只有少数的几个有意义的值,例如:一个布尔变量只有两个值,真和假,又如:在游戏中用户的操作方向只有4个上下左右。
可以使用宏定义的方式来实现:

#define BOOL int#define TRUE 1#define FALSE 0BOOL max(int a,int b){    return a>b?TRUE:FALSE;}int main(int argc, const char * argv[]) {    // insert code here...    printf("Hello, World!\n");        BOOL result = max(1,2);    printf("%d\n",result);return 0;}


    
+++++++++++++++++++++++++++++++++
//上面通过宏定义来实现由几个弊端    //如果没有于都程序的人,并不知道true false 具有相同的类型    //如果变量值比较多,宏定义很麻烦    //宏定义在编译器编译期间被删除,给调试带来了不便    //c语言提供了一种特殊类型枚举来解决这个问题,    
++++++++++++++++++++++++++++++++
枚举的定义和之前的union struct 一样都是可以有变量,标记,和类型定义这三种。
+++++++++++++++++++++++++++++++
//结构类型的定义    struct{        int pid;        char name[10];        int age;    }p1;        union{        int pid;        char name[10];        int age;    }u1;        //枚举类型,e是枚举类型的变量,这个变量的取值可以是TRUE,FALSE    false;        enum{        //TRUE,FALSE        //TRUE=1,FALSE=0        FALSE,TRUE//枚举的默认情况下,第一个元素值为0    }e;        //e可以赋值为非TRUE,FALSE的,例如e=8;是可以的,但是一般还是取自己的值    e=TRUE;    printf("%d\n",e);        //和结构以及联合一样,也可以是枚举标示    enum ENUMBOOL{        TRUE,FALSE    };        enum ENUMBOOL en = TRUE;             //和结构以及联合一眼,也可以是类型定义    typedef enum{        TRUE,FALSE    }TYPEENUMBOOL;    TYPEENUMBOOL tnbool = FALSE;        //枚举成员只能是整形的    typedef enum{        UP,//枚举的默认情况下,第一个元素值为0        DOWN,//如果DOWN =5, 那么下面的LEFT =6,就是后面的成员值在前面的值基础上加1        LEFT,        RIGHT    }DIRECTION;        DIRECTION d1;    d1=UP;    printf("%d\n",d1);



++++++++++++++++++++++++++++

////  main.c//  EnumTest////  Created by 千 on 16/7/22.//  Copyright © 2016年 kodulf. All rights reserved.//#include <stdio.h>#define BOOL int#define TRUE 1#define FALSE 0BOOL max(int a,int b){    return a>b?TRUE:FALSE;}int main(int argc, const char * argv[]) {    // insert code here...    printf("Hello, World!\n");             BOOL result = max(1,2);    printf("%d\n",result);        //上面通过宏定义来实现由几个弊端    //如果没有于都程序的人,并不知道true false 具有相同的类型    //如果变量值比较多,宏定义很麻烦    //宏定义在编译器编译期间被删除,给调试带来了不便    //c语言提供了一种特殊类型枚举来解决这个问题,            //结构类型的定义    struct{        int pid;        char name[10];        int age;    }p1;        union{        int pid;        char name[10];        int age;    }u1;        //枚举类型,e是枚举类型的变量,这个变量的取值可以是TRUE,FALSE    false;        enum{        //TRUE,FALSE        //TRUE=1,FALSE=0        FALSE,TRUE//枚举的默认情况下,第一个元素值为0    }e;        //e可以赋值为非TRUE,FALSE的,例如e=8;是可以的,但是一般还是取自己的值    e=TRUE;    printf("%d\n",e);        //和结构以及联合一样,也可以是枚举标示    enum ENUMBOOL{        TRUE,FALSE    };        enum ENUMBOOL en = TRUE;             //和结构以及联合一眼,也可以是类型定义    typedef enum{        TRUE,FALSE    }TYPEENUMBOOL;    TYPEENUMBOOL tnbool = FALSE;        //枚举成员只能是整形的    typedef enum{        UP,//枚举的默认情况下,第一个元素值为0        DOWN,//如果DOWN =5, 那么下面的LEFT =6,就是后面的成员值在前面的值基础上加1        LEFT,        RIGHT    }DIRECTION;        DIRECTION d1;    d1=UP;    printf("%d\n",d1);        return 0;}





0 0