enum关键字
特点:
1、枚举类型是受限制的有符号整型数据类型;int;
2、枚举元素(枚举常量)必须是有符号整型数据值;
3、枚举类型定义的变量,取值范围必须是枚举集合中的枚举元素的值。
enum Week{Mon=1,TUe,Wed,Thu,Fri,Sat,Sun};
<1>枚举类型是一个集合,集合中的枚举元素是用标识符命名的整型常量
枚举元素之间用逗号隔开
<2>Week是一个标识符(枚举名)
<3>第一个枚举元素默认整型0,后续枚举元素在前一位基础依次加1
<4>同时可以人为设定枚举元素的值,从而自定义某个范围内int值
enum Week
{
Mon,Tue,Wed,Thu,Fri,Sat,Sun
};
int main()
{
enum Week day = Sun;
day++;
day += 1;
day - =2;
day = Mon + Tue;
}
上面运算符都是错的,枚举类型变量只是复制前面集合中的枚举元素
2、枚举元素不能重命名
这里和宏#define重名一样。
但是宏在预编译时替换,
枚举在编译时替换。
3、全局枚举变量
enum Week{Mon,Sun} WeekDay;
4、枚举类型名和typdef
与struct相似
typedef enum (Week){Mon,Sun}WeekDay;
5、用途
1>函数返回值的处理;
项目实践中,数据结构
#define OK 1
#define ERROR 0
#define OVERFILOW -1
#define PTRNUOLL -2
void Find_Value(const char* pa, int b, char* pc)
{
while (!*pa)return PTRNUOLL;
return ERROR;,
return OK;
}
typedef enum (Select){PTRNUOLL -2,OVERFILOW -1,ERROR 0,OK 1} Find_Value;
void Find_Value(const char* pa, int b, char* pc)
{
while (!*pa)return PTRNUOLL;
return ERROR;,
return OK;
}
2>状态方程中的处理
最后说一句,枚举状态值是“复制、复制再复制”。别用scanf从键盘上输入,二傻子,哈哈哈