文章目录

  • 前言
  • 枚举的介绍
  • 枚举类型的定义
  • 枚举的优点
  • 枚举的使用
  • 写在最后

前言

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

枚举的介绍

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

比如我们现实生活中:
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 Dayenum Sexenum Color都是枚举类型。

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

3.这些可能取值都是有值的,默认从0开始,依次递增1,例如:上面的RED可以看作0GREEN可以看作1BLUE可以看作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;

写在最后

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

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

C语言 自定义类型 之 【枚举】相关推荐

  1. 【维生素C语言】第十二章 - C语言自定义类型讲解(联合体、枚举、联合体)

    原标题:自定义类型讲解?楼下保安大爷直呼内行!![C语言] 前言: 本章将对C语言自定义类型进行讲解,前期我们讲过结构体,这章将会把前面结构体还没讲完的知识继续补充. 一.结构体(struct) 结构 ...

  2. vba 定义类_VBA|自定义类型、枚举类型和类模块及其使用

    VBA中,自定义类型相当于C语言中的结构体,枚举类型也与C语言中的枚举类型相似.自定义类型和枚举类型放到模块的子过程的前面即可. VBA中, 类模块相当于C语言中的类,类模板要单独放到类模块中(自定义 ...

  3. C语言自定义类型详解

    C语言自定义类型详解 一.结构体 1.结构的声明 2.特殊的声明 3.结构的自引用 4.结构体变量的定义和初始化 5.结构体内存对齐 6.修改默认对齐数 7.结构体传参 二.位段 1.什么是位段 2. ...

  4. 浅谈C语言自定义类型枚举和联合体以及对结构体位段的补充

    文章目录 前言 一.结构体位段的补充说明 1.结构体位段的定义 2.位段的内存规则 3.位段的总结 2.枚举类型 1.枚举的简单介绍 3.联合体类型 1.联合体简单介绍 2.联合体存储方式 4.总结 ...

  5. C语言——自定义类型(结构体,枚举,联合体,位段)

    目录 结构体 结构体的定义 匿名结构体 结构体的自引用 结构体大小计算 位段 枚举 枚举概念 枚举的声明与使用 枚举大小计算 枚举与宏的区别 联合体 联合体的概念 联合体的声明与使用 联合体大小计算 ...

  6. C语言——自定义类型详解(结构体,联合体,枚举,位段)

    专栏:C语言 个人主页:HaiFan. 专栏简介:本专栏主要更新一些C语言的基础知识,也会实现一些小游戏和通讯录,学时管理系统之类的,有兴趣的朋友可以关注一下. 结构体 前言 一.结构体 1.结构体类 ...

  7. 详解C语言自定义类型(结构体,位段,枚举,联合)

    C语言中有许多类型,比如整形int,字符型char,双精度浮点型double等等.这些类型可以存放一些值或者字符.但是如果我想要一种类型存放一本书,显然是没有的,那么这时候就需要自定义类型了,也就是结 ...

  8. C语言自定义类型的介绍(结构体,枚举,联合体,位段)

    ⭐️前面的话⭐️ 大家好!在C语言中,有个叫"自定义类型"玩意,它究竟是什么呢?其实,就是字面意思,可以自己定义的类型就是自定义类型.具体说就是我们熟知的结构体,枚举,位段,联合体 ...

  9. C语言自定义类型详解!

    目录 内容概述 结构体类型 结构类型的声明 结构体的特殊声明 结构体的自引用 结构体变量的定义和初始化 结构体内存对齐 结构体传参 位段 什么是位段? 位段的内存分配 位段跨平台问题 枚举类型 枚举类 ...

  10. C语言自定义类型——枚举类型讲解

    一.枚举类型 定义:顾名思义就是一一列举,可以列举出所有常见的可能.每种可能都是常量,称为枚举常量! 把可能的取值一一列举. 比如我们现实生活中: 一周的星期一到星期日是有限的7天,可以一一列举: e ...

最新文章

  1. linux cache 内核参数,Linux内核中drop_caches参数
  2. android rtsp协议转http协议_网络协议HTTP 协议(一)
  3. ubuntu下安装android ndk
  4. Linux设备树翻译计划
  5. 华为数据通信产品VRP操作系统的使用
  6. python 直方图排序_利用直方图对lis进行排序
  7. MVVM教程[资源+分析]
  8. 学习Python编程培训 有哪些爬虫技术课程需要掌握
  9. 555定时器的应用——施密特触发器
  10. 通过YAJL生成json语句
  11. 用 js 写的 WebSocketHeartBeat,心跳检测,断线重连
  12. srs之服务搭建+OBS推流(简单记录)
  13. C++递归完成汉诺塔游戏(超详细解读)
  14. java怎么创建jsp文件怎么打开_Eclipse中怎么创建jsp文件?
  15. Swift 语言的设计错误
  16. NLP预处理——编码、繁转简、停用词、表情、标签
  17. 更改bootstrap工具提示-tooltip
  18. signature=6f778f12ee5c543045f5827af4fb220b,来用百度密语吧!!!
  19. STC89C52单片机AD/DA介绍与代码演示
  20. vm10升级到16的问题

热门文章

  1. Python,pandas中DataFrame的选取总结
  2. 真无线蓝牙耳机哪个延迟最低?低延迟蓝牙耳机推荐
  3. 养肾=养命!这7个最伤肾的行为你犯了吗?程序员收藏
  4. python与金融工程的区别_科研进阶 | 纽约大学 | 金融工程、量化金融、商业分析:Python金融工程分析...
  5. 新版的豌豆荚如何连接电脑
  6. 不得不说,这是青铜才需要了解的,绝地求生刺激战场段位保护解析
  7. 此计算机必须为委派而被信任_允许受信任的用户进行委派
  8. MathJax 引擎数学符号说明
  9. charles的使用
  10. 美团机器学习实践 密码_机器学习遇到密码学的地方