龙空技术网

看了这篇文章,你就懂C语言中的枚举(enum)类型了

技术同胞 190

前言:

当前兄弟们对“c语言enum定义”都比较关注,咱们都想要了解一些“c语言enum定义”的相关内容。那么小编同时在网络上汇集了一些对于“c语言enum定义””的相关文章,希望你们能喜欢,咱们一起来学习一下吧!

定义

枚举是C语言中的一种数据类型,它主要的功能是代替常量数字,可以让数字变得易读。

那,怎么定义一个枚举?

enum PeopleType {

None = 0,

Student = 1,

Teacher = 2,

};

如上所示,是不是看起来很简单?

其中 enum 是C语言中的关键字,PeopleType是枚举名称。而None,Student,Teacher三个标识符分别被定义成了三个数值,0,1,2。那为什么要这样做呢?直接用0,1,2不好吗?

当然是为了方便我们程序员记忆。记住Student远比1来得更具体。

打个比方,现在我们要实现打印Student(学生)的数值,我们随时可能忘记1代表着它,但我们肯定记得它的单词是Student,那么:

printf("%d\n", Student);

即可实现功能。

内部实现原理

编译器是如何将一个英语单词Student转为1的?

回答问题之前,我们先回顾一下C中的宏常量定义——

#define Student 1

#define Teacher 2

没错,编译器会自动将Student按照宏定义规则去替换成数值1。

枚举通常都会被当成整型(int)做处理,而且它一般占用4个字节。

实例:

enum PeopleType {

None = 0,

Student = 1,

Teacher = 2,

MaxPeopleType = 0x7FFFFFFFFFFFFUL,

};

如果用sizeof(enum PeopleType),那么它占用字节是多少?

如果用打印MaxPeopleType,它的数值是多少?

枚举的使用作为类型、或是常量的定义,比如示例中的那样。可以作整型变量的初始化。比如:int ptype = Student;可以作函数传参。比如:call_function(Student);可以作为switch中的选择项。

switch (ptype){

case Student: //学生

break;

case Teacher: //教师

break;

}

5. 可以作为if或else if中的条件判断。

if (ptype == Student){

printf("我是学生!\n");

}

总结

看完后,关于C语言中的枚举,你学会了吗?

更多精彩,请关注我——技术同胞

#计算机##编程##C语言##我要上头条##我要涨粉#

标签: #c语言enum定义