enum表示枚举类型,在实际运用中,一些变量的取值被限定在一定范围之内,例如一年有四个季节,一周有7天等。如果将这些变量设置为整型显然不妥当(编程或者软件可以看做是对现实事物的模拟)。为此C语言提供了一种“枚举”类型,同时java在JDK1.5之后也提供了对枚举类型的支持。在C语言中”枚举”类型是一种基本的数据类型,而不能被分解为其他数据类型。使用枚举类型需要注意一下几点:
1. 枚举类型是个常量,不是一个变量,我们不能再程序中重新赋值。
2. 枚举元素本身由系统定义了一个表示序号的值,一般从0开始
请看程序实例:
#include<stdio.h>
/*
枚举类型举例 by guancan 20141205
*/
enumseason{
Spring, Summer, Autumn, Winter
};//定义一个枚举变量
voidmain(){
enum season n1 = Spring;
enum season n2 = Summer;
enum season n3 = Autumn;
enum season n4 = Winter;
printf("%d,%d,%d,%d",n1,n2,n3,n4);
}
该实例表示枚举变量中的类型值是从0开始,我们也可以自定义,如果定义改为:
enumseason{
Spring = 2, Summer, Autumn, Winter
};
那么结果就成了2,3,4,5
如果改为
enumseason{
Spring , Summer = 4, Autumn, Winter
};
那么结果为0,4,5,6,
总结:enum中变量值从0开始计数,逐个增加,如果自定义,那么从自定义的变量开始逐个递增来进行计数。
3. 我们可以把枚举值赋给枚举变量,我们也以把元素的数值赋给枚举变量,如
#include<stdio.h>
/*
枚举类型举例 by guancan 20141205
*/
enumseason{
Spring , Summer = 4, Autumn, Winter
};//定义一个枚举变量
voidmain(){
/*enum season n1 = Spring;
enum season n2 = Summer;
enum season n3 = Autumn;
enum season n4 = Winter;*/
enum season n1 = 6;
enum season n2 = 8;
enum season n3 = 2;
enum season n4 = 3;
printf("%d,%d,%d,%d",n1,n2,n3,n4);
}
注:有的网上文章说这种定义是不正确的,但是经过验证也是可以运行的
枚举类型主要用来判断,即判断用户输入是不是符合条件,最多的使用switch语句,实例代码如下:
#include<stdio.h>
/*
枚举类型举例 by guancan 20141205
*/
enum season{
Spring, Summer, Autumn, Winter
};//定义一个枚举变量
void main(){
inti ;
printf("请输入:\n");
scanf_s("%d",&i);
switch(i){
caseSpring:
printf("现在是春天");
break;
caseSummer:
printf("现在是夏天");
break;
caseAutumn:
printf("现在是秋天");
break;
caseWinter:
printf("现在是冬天");
break;
default:
printf("输入错误");
break;
}
}