c语言枚举类型
2016-07-22 01:31
399 查看
为什么使用枚举类型?
在一些程序中,有一些变量只有少数的几个有意义的值,例如:一个布尔变量只有两个值,真和假,又如:在游戏中用户的操作方向只有4个上下左右。
可以使用宏定义的方式来实现:
+++++++++++++++++++++++++++++++++
枚举的定义和之前的union struct 一样都是可以有变量,标记,和类型定义这三种。
+++++++++++++++++++++++++++++++
++++++++++++++++++++++++++++
//
// 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;
}
在一些程序中,有一些变量只有少数的几个有意义的值,例如:一个布尔变量只有两个值,真和假,又如:在游戏中用户的操作方向只有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;
}
相关文章推荐
- [C++11]std::mutex与pthread mutex区别
- 【C语言】写一个宏交换数字的奇数位与偶数位
- c语言联合union 的联合变量,联合标记,联合类型定义的区别
- Visual C++
- c语言中 结构变量,结构类型标示,结构类型定义的区别
- 使用setprecision控制输出流显示浮点数的有效数字个数(C++)
- 提高项目43-动态数组排序
- C++ main函数中参数argc和argv含义及用法
- 提高项目42-学生人数没个准
- 取消c++所设置的cout中setprecision输出的格式
- 提高项目41-命令行加法器
- 提高项目40.1-带行号的显示1
- 高自由度:c++八大排序算法实现代码和原理
- Cpp Primer杂记–extern const的声明注意
- 新手入门:C/C++中枚举类型(enum)
- 读 《C Traps and Pitfalls》Record
- C++中的默认函数 深拷贝与浅拷贝 深赋值与浅赋值
- C语言合法标识符 hd 2024
- C语言内存类型
- vim配置for c++