C语言 枚举enum 知识点总结

   

目录

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 <stdio.h>
#include <stdlib.h>

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 <stdio.h>
#include <stdlib.h>

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 <stdio.h>
#include <stdlib.h>

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
发布了247 篇原创文章 · 获赞 257 · 访问量 62万+

猜你喜欢

转载自blog.csdn.net/u012351051/article/details/101038125