目录
1、枚举中的值是整型。
2、枚举中的成员就是一个全局“宏”。
3、如果第1个枚举成员未赋值,第一个枚举成员默认值为整型的0。
4、没有指定值的枚举元素,其值为前一元素加1.
5、枚举元素的值可以自定义,也可以不定义。
枚举类型在C编程中经常用到,尤其是状态枚举、使得程序的可读性更强,“枚举”正如字面意思,将变量可能 出现的值都列举出来,限定变量的值范围,比如:
enum EVENT{
EVENT1,
EVENT2,
EVENT3,
EVENT4,
EVENT5,
EVENT6
};
“枚举”类型名为“EVENT”, 该类型的变量值 只可能是 EVENT1~EVENT6。
枚举类型的容易忽略的知识点有:
1、枚举中的值是整型。
2、枚举中的成员就是一个全局“宏”。
这就要求不同的枚举类型中的成员名称不能相同,当然我们也可以不定义枚举变量而直接使用枚举成员。代码:
enum EVENT{
EVENT1,
EVENT2,
EVENT3,
EVENT4,
EVENT5,
EVENT6
};
enum EVENT1{
EVENT1,
EVENT2,
EVENT3,
EVENT4,
EVENT5,
EVENT6
};
这里虽然定义了2种枚举,分别为EVENT和EVENT1,但是两种枚举类型中的成员 名字相同,编译会报错,提示“重复定义”。
3、如果第1个枚举成员未赋值,第一个枚举成员默认值为整型的0。
代码如下:
#include <>
#include <>
enum EVENT{
EVENT1,
EVENT2,
EVENT3,
EVENT4,
EVENT5,
EVENT6
};
int main(int argc, char *argv[]) {
printf("EVENT1:%d\n", EVENT1);
printf("EVENT2:%d\n", EVENT2);
printf("EVENT3:%d\n", EVENT3);
printf("EVENT4:%d\n", EVENT4);
printf("EVENT5:%d\n", EVENT5);
return 0;
}
运行结果:
EVENT1:0
EVENT2:1
EVENT3:2
EVENT4:3
EVENT5:4
这个程序代码还证明了 知识点1和2,枚举成员本身就是 一个宏定义,可以直接使用。
4、没有指定值的枚举元素,其值为前一元素加1.
代码:
#include <>
#include <>
enum EVENT{
EVENT1 = 3,
EVENT2,
EVENT3,
EVENT4,
EVENT5,
EVENT6
};
int main(int argc, char *argv[]) {
printf("EVENT1:%d\n", EVENT1);
printf("EVENT2:%d\n", EVENT2);
printf("EVENT3:%d\n", EVENT3);
printf("EVENT4:%d\n", EVENT4);
printf("EVENT5:%d\n", EVENT5);
return 0;
}
运行结果:
EVENT1:3
EVENT2:4
EVENT3:5
EVENT4:6
EVENT5:7
5、枚举元素的值可以自定义,也可以不定义。
不定义的时候,元素值就是从0开始递增。自定义则是想怎么定义 都可以,代码如下:
#include <>
#include <>
enum EVENT{
EVENT1 = 1,
EVENT2 = 3,
EVENT3 = 5,
EVENT4 = 7,
EVENT5 = 9,
EVENT6 = 11
};
int main(int argc, char *argv[]) {
printf("EVENT1:%d\n", EVENT1);
printf("EVENT2:%d\n", EVENT2);
printf("EVENT3:%d\n", EVENT3);
printf("EVENT4:%d\n", EVENT4);
printf("EVENT5:%d\n", EVENT5);
return 0;
}
运行结果:
EVENT1:1
EVENT2:3
EVENT3:5
EVENT4:7
EVENT5:9