enum(看了这篇文章)

定义 枚举是C语言中的一种数据类型,它主要的功能是代替常量数字,可以让数字变得易读。 那,怎么定义一个枚举? enum PeopleType { None = 0, Student = 1, Teacher = 2, }; 如上...

看了这篇文章,你就懂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);

即可实现功能。

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

内部实现原理

编译器是如何将一个英语单词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,它的数值是多少?

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

枚举的使用作为类型、或是常量的定义,比如示例中的那样。可以作整型变量的初始化。比如: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语言##我要上头条##我要涨粉#

  • 发表于 2022-10-30 11:59
  • 阅读 ( 91 )
  • 分类:互联网

0 条评论

请先 登录 后评论
技术部
技术部

733 篇文章

你可能感兴趣的文章

相关问题