【C语言笔记】枚举

举报
果果小师弟 发表于 2021/05/29 14:20:17 2021/05/29
【摘要】 1、如果一个变量只有几种可能的值,则可以定义为“枚举类型”;所谓“枚举”就是把可能的值一一的列举出来,变量的值只限于列举出来的值的范围, 如: enum 枚举类型{枚举成员列表}; //其中的枚举成员列表是以逗号“,”相分隔 如:enum Spectrum{red,black,yellow,blue,white}; 123 2、可以用“枚举类型”声明符号名称来表示i...

1、如果一个变量只有几种可能的值,则可以定义为“枚举类型”;所谓“枚举”就是把可能的值一一的列举出来,变量的值只限于列举出来的值的范围, 如:

enum 枚举类型{枚举成员列表};
//其中的枚举成员列表是以逗号“,”相分隔
如:enum Spectrum{red,black,yellow,blue,white};

  
 
  • 1
  • 2
  • 3

2、可以用“枚举类型”声明符号名称来表示int型常量。只要是能使用int型的地方就能够使用枚举类型。注意:C语言中的枚举的一些特性不适合C++;比如c中的枚举变量允许使用++运算符,但是c++中则不允许。

3、有关枚举类型常量的默认值

enum Spectrum{red,balck,yellow,blue,white}; 0 1 2 3 4 
默认情况下:该枚举列表中的常量值分别为:0,1,2,3,4

  
 
  • 1
  • 2
  • 3

当然也可以在枚举声明中,可以为枚举常量指定整数值:如

enum Spectrum{red=10,balck=20,yellow=30, blue=40,white=50};

  
 
  • 1

也可以只对枚举类型中的一个枚举元素赋值;这时该枚举元素后面的枚举元素会被赋予后续的值。如:

 enum Spectrum{red,balck=22,yellow,blue,white};
 则:red=0,black=22,yellow=23,blue=24,white=25;


  
 
  • 1
  • 2
  • 3

4、枚举类型也可以是匿名的匿名的枚举类型会有着意想不到的作用,比如在程序中需要使用数值的名字的时候,常常有3种方法可以实现。

(1)宏定义

#define FALSE 0
#define TRUE  1

  
 
  • 1
  • 2

但是宏定义有弱点:其定义的只是预处理阶段的名字,在编译器的预处理阶段会进行简单的名字替换,而且不会进行类型的安全检查,其作用域是全局的,因此若程序中有变量true、false,则会被替换。为了避免这样的情况,采用将全部的宏用大写来命名,以区别于正常的代码。

(2)匿名的enum枚举

enum {FALSE,TRUE};		//FALSE 0, TRUE 1

  
 
  • 1

这里的FALSE,TRUE都是编译时期的名字,编译器会对其进行类型检查,若代码中其他地方有和该名字冲突的,会报错。因此采用匿名的枚举不会有产生干扰正常代码的尴尬。

(3)采用静态变量
c++中更加推荐使用该方式,如:

static const int FALSE = 0;
static const int TRUE = 1;

  
 
  • 1
  • 2

在这里的TRUE,FALSE同样会得到编译器在编译阶段的检查。由于是静态变量,因此其作用域被限制到了本文件内。相比于enum枚举类型,静态变量不仅是编译时期的名字,同时编译器还可能会在代码中为TRUE,FALSE产生实际的数据,这会增加一点存储空间。

5、枚举类型的作用:提高程序的可读性和可维护性

6.用作函数返回错误码这是在编程中使用得最为广泛的用法之一,通常在开发中,我们把考虑到的所有可能出现的错误都列举在一个enum中,这样,我们就不用再函数调用出错时候,返回一个数字。这样的做法好处有很多:如更容易看出函数调用出错的原因、如果enum中有漏掉的错误提示,则再添加一个等。

文章来源: blog.csdn.net,作者:果果小师弟,版权归原作者所有,如需转载,请联系作者。

原文链接:blog.csdn.net/qq_39400113/article/details/108572389

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。