c语言中的枚举
① 我讲讲c语言中的枚举是什么意思
枚举类型可以理解为一个集合,枚举成员是集合内的一些带有名字的整型常量,成员之间用逗号隔开。枚举的名字可有可无,只是一个标识。枚举中, 第一个枚举成员默认值为整型的0,后续枚举成员的值在前一个成员上加1。当然也可以人为设定枚举成员的初始值。例如enum Person { Man, Women}; enum Person { Man=1, Women}; 通常用枚举来列举一些有限数量的变量,也就是可列举的变量,例如一周七天,就可以用枚举实现。
② C语言枚举类型是什么意思
就是你声明的这个枚举变量的值,只能取其中的东西,比如:enum {Monday,Tuesday,Wednesday,Thursday,Friday} weekday;那weekday这个变脸的值专只能是{}中的值。(他们分别对应属数字0,1,2,3,4,因为枚举型变量也是整型)
③ C语言中枚举到底是什么
这个其实就是为了提供程序的可读性的,方便理解;
另外:枚举的作用还有是为了提供有限个选择,避免用户因错误输入其他信息,从而规范了程序的有效执行性
举例子:写一个简单的程序,有增删改查等多种种功能,用 switch...case
你直接case 1,2,3,4,5,6..... 这样当然是没问题,但别人不一定看得懂你的1234是代表啥;
定义枚举,然后case ADD DELETE MODIFY QUERY.... ,这样一看就知道每个case对应的是什么功能,很直观;
其实结果是一样的,但是阅读起来会更方便理解;
④ c语言枚举用法
一、对枚举型的变量赋值。
实例将枚举类型的赋值与基本数据类型的赋值进行了对比:
方法1:先声明变量,再对变量赋值
#include<stdio.h>
/*定义枚举类型*/
enumDAY{MON=1,TUE,WED,THU,FRI,SAT,SUN};
voidmain()
{
/*使用基本数据类型声明变量,然后对变量赋值*/
intx,y,z;
x=10;
y=20;
z=30;
/*使用枚举类型声明变量,再对枚举型变量赋值*/
enumDAYyesterday,today,tomorrow;
yesterday=MON;
today=TUE;
tomorrow=WED;
printf("%d%d%d ",yesterday,today,tomorrow);
}
方法2:声明变量的同时赋初值
#include<stdio.h>
/*定义枚举类型*/
enumDAY{MON=1,TUE,WED,THU,FRI,SAT,SUN};
voidmain()
{
/*使用基本数据类型声明变量同时对变量赋初值*/
intx=10,y=20,z=30;
/*使用枚举类型声明变量同时对枚举型变量赋初值*/
enumDAYyesterday=MON,
today=TUE,
tomorrow=WED;
printf("%d%d%d ",yesterday,today,tomorrow);
}
方法3:定义类型的同时声明变量,然后对变量赋值。
#include<stdio.h>
/*定义枚举类型,同时声明该类型的三个变量,它们都为全局变量*/
enumDAY{MON=1,TUE,WED,THU,FRI,SAT,SUN}yesterday,today,tomorrow;
/*定义三个具有基本数据类型的变量,它们都为全局变量*/
intx,y,z;
voidmain()
{
/*对基本数据类型的变量赋值*/
x=10;y=20;z=30;
/*对枚举型的变量赋值*/
yesterday=MON;
today=TUE;
tomorrow=WED;
printf("%d%d%d ",x,y,z);//输出:102030
printf("%d%d%d ",yesterday,today,tomorrow);//输出:123
}
方法4:类型定义,变量声明,赋初值同时进行。
#include<stdio.h>
/*定义枚举类型,同时声明该类型的三个变量,并赋初值。它们都为全局变量*/
enumDAY
{
MON=1,
TUE,
WED,
THU,
FRI,
SAT,
SUN
}
yesterday=MON,today=TUE,tomorrow=WED;
/*定义三个具有基本数据类型的变量,并赋初值。它们都为全局变量*/
intx=10,y=20,z=30;
voidmain()
{
printf("%d%d%d ",x,y,z);//输出:102030
printf("%d%d%d ",yesterday,today,tomorrow);//输出:123
}
2、对枚举型的变量赋整数值时,需要进行类型转换。
#include<stdio.h>
enumDAY{MON=1,TUE,WED,THU,FRI,SAT,SUN};
voidmain()
{
enumDAYyesterday,today,tomorrow;
yesterday=TUE;
today=(enumDAY)(yesterday+1);//类型转换
tomorrow=(enumDAY)30;//类型转换
//tomorrow=3;//错误
printf("%d%d%d ",yesterday,today,tomorrow);//输出:2330
}
3、使用枚举型变量
#include<stdio.h>
enum
{
BELL='a',
BACKSPACE='',
HTAB=' ',
RETURN=' ',
NEWLINE=' ',
VTAB='v',
SPACE=''
};
enumBOOLEAN{FALSE=0,TRUE}match_flag;
voidmain()
{
intindex=0;
intcount_of_letter=0;
intcount_of_space=0;
charstr[]="I'mElyefod";
match_flag=FALSE;
for(;str[index]!='