C语言 自定义类型 之 【枚举】

简介: C语言 自定义类型 之 【枚举】

前言


枚举在我们平时练习或学习的时候可能不是很常用,但是其在工程项目里,还是比较常见的,因为他能起到优化用。并且,有时我们在写题的时候,也会运用到枚举的思想。


枚举的介绍


枚举顾名思义就是 一 一 列举。把可能的取值 一 一 列举。

比如我们现实生活中:

1.一个星期从星期一到星期天的有限的7天可以 一 一 列举。

2.月份从1月到12月也可以 一 一 列举出来。

3.颜色分红黄蓝绿蓝靛紫几种颜色,也可以 一 一 列举出来。


枚举类型的定义


直接上代码(注意观察语法形式):

// enum var_name  这个就是枚举类型
enum Sex  // 枚举性别
{
  MAN, // 男人   
  WOMAN  // 女人
  // 当然也有可能是人妖
};
enum Day  // 枚举星期
{ 
  Mon,  // 注意这里是逗号
  Tues,
  Wed,
  Thur,
  Fri,
  Sat,
  Sun  // 最后一个后面什么符号也不用打
};  // 这里必须要有分号
enum Color
{
  RED,
  GREEN,
  BLUE
};


当然,既然是类型,那么也可以使用typedef起别名:

typedef enum Color
{
  RED,
  GREEN,
  BLUE
}Clr;  // 将 enum Color 类型名 简化成 Clr


1.以上定义的enum Day,enum Sex,enum Color都是枚举类型。

2.{}中的内容是枚举类型的可能取值,也叫枚举常量。

3.这些可能取值都是有值的,默认从0开始,依次递增1,例如:上面的RED可以看作0,GREEN可以看作1,BLUE可以看作2。


4.当然在定义的时候也可以赋初值。例如:

enum Color//颜色
{
  RED = 1,
  GREEN = 2,
  BLUE = 4
};


而如果是这样赋值:

enum Day  // 枚举星期
{ 
  Mon, 
  Tues,
  Wed,
  Thur = 10,
  Fri,
  Sat,
  Sun  
};


  • 那也就意味着从MonWed是由0开始依次递增(Mon = 0, Tuse = 1, Wed = 2),从ThurSun是由10开始依次递增(Thur = 10, Fri = 11, Sat = 12, Sun = 13)。


枚举的优点


  • 为什么使用枚举?
  • 我们可以使用 #define 定义常量,为什么非要使用枚举?

原因:

  1. 增加代码的可读性和可维护性。
  2. 和#define定义的标识符比较枚举有类型检查,更加严谨。
  3. 防止了命名污染(封装)。
  4. 便于调试。
  5. 使用方便,一次可以定义多个常量。
  • 我们可以去看很多项目的源码,会发现,里面很多用枚举来定义常量。


枚举的使用

enum Color//颜色
{
   RED = 1,
   GREEN = 2,
   BLUE = 4
};
// 只能拿枚举常量给枚举变量赋值,才不会出现类型的差异。
enum Color clr = GREEN;
clr = 5;


写在最后


虽然在现在阶段我们很难体会到枚举的好处,但是我们可以多去看看别人的代码,多去领悟一下枚举到底有什么用?这样我们使用起来也才会得心应手。


感谢阅读本小白的博客,错误的地方请严厉指出噢!

相关文章
|
21天前
|
安全 编译器 Linux
【c语言】轻松拿捏自定义类型
本文介绍了C语言中的三种自定义类型:结构体、联合体和枚举类型。结构体可以包含多个不同类型的成员,支持自引用和内存对齐。联合体的所有成员共享同一块内存,适用于判断机器的大小端。枚举类型用于列举固定值,增加代码的可读性和安全性。文中详细讲解了每种类型的声明、特点和使用方法,并提供了示例代码。
19 3
|
1月前
|
存储 编译器 C语言
c语言回顾-联合和枚举
c语言回顾-联合和枚举
28 4
|
1月前
|
存储 C语言 C++
深入C语言,发现多样的数据之枚举和联合体
深入C语言,发现多样的数据之枚举和联合体
深入C语言,发现多样的数据之枚举和联合体
|
1月前
|
存储 编译器 Linux
C语言——自定义类型
C语言——自定义类型
|
1月前
|
存储 安全 编译器
深入理解C语言中的枚举
深入理解C语言中的枚举
|
1月前
|
存储 编译器 C语言
【C语言】自定义类型:联合与枚举的简明概述
【C语言】自定义类型:联合与枚举的简明概述
|
3月前
|
存储 编译器 C语言
【C语言篇】自定义类型:联合体和枚举详细介绍
像结构体⼀样,联合体也是由⼀个或者多个成员构成,这些成员可以不同的类型。
45 1
|
3月前
|
存储 安全 编译器
C语言自定义类型
C语言自定义类型
33 10
|
5月前
|
C语言
枚举(C语言)
枚举(C语言)
|
5月前
|
编译器 C语言
C语言枚举:深入探索下标默认值、自定义值及部分自定义情况
C语言枚举:深入探索下标默认值、自定义值及部分自定义情况