为什么使用枚举类型?
在一些程序中,有一些变量只有少数的几个有意义的值,例如:一个布尔变量只有两个值,真和假,又如:在游戏中用户的操作方向只有4个上下左右。
可以使用宏定义的方式来实现:
+++++++++++++++++++++++++++++++++
枚举的定义和之前的union struct 一样都是可以有变量,标记,和类型定义这三种。
+++++++++++++++++++++++++++++++
在一些程序中,有一些变量只有少数的几个有意义的值,例如:一个布尔变量只有两个值,真和假,又如:在游戏中用户的操作方向只有4个上下左右。
可以使用宏定义的方式来实现:
#define BOOL int
#define TRUE 1
#define FALSE 0
BOOL 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 0
BOOL 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;
}