枚举函数:enum

 枚举是C语言中一种基本的数据类型,实际上我们可以认为这就是定义了一些int 类型的符号(枚举元素),由我们或者编译器为这些符号赋值,因此我们只能对其赋整数,而赋值小数会舍去小数点后的部分

赋值的基本原则为从0开始依次加1,如果用户自己定义在a处定义了一个值,编译器就从a处后从a开始递增

以下为显示结果:

我们可以看到在一开始未赋值的情况下,系统自动从0开始递增,递增数为1,而遇到我们赋值的d元素后,d元素之后的所有元素都从d的值开始递增。而枚举只能在自己的定义内进行更改数值,在定义后,枚举元素就是一个常量,不能再次进行数据更改。

以下为报错:

从这一点来看,其实枚举和宏定义有类似的作用,都是对一个符号赋值后将其变为常量,在后续过程中方便使用和更改。

枚举的标准用法:

而宏定义先出现,用来解决符号常量的问题;后来人们发现有时候定义的符号常量彼此之间有关联(多选一的关系),用宏定义来做虽然可以但是不贴切,于是乎发明了枚举来解决这种情况。例如星期,月份这种递增的,使用枚举就方便很多。

宏定义:

枚举:

枚举的优点有

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

枚举的妙用:
我们可以利用枚举数据类型自增的特点,将最后一个元素设置为计数器,这样就可以轻松得出一共有多少个枚举元素。这种做法避免了对宏定义的反复更改。这种用法在哔哩哔哩的Rock老师的教学项目  植物大战僵尸  中有使用,大家感兴趣可以看一看。

结束!

C语言 枚举函数介绍相关推荐

  1. C语言tolower函数介绍、示例和实现

    文章目录 1.包含头文件 2.函数声明 3.功能说明 4.示例 5.自定义的tolower函数的实现方法 6.获取视频教程 7.版权声明 C语言tolower函数用于把大写字母转换为小写字母. 在本文 ...

  2. C语言isupper函数介绍、示例和实现

    文章目录 1.包含头文件 2.函数声明 3.功能说明 4.示例 5.自定义的isupper函数的实现方法 6.获取视频教程 7.版权声明 C语言isupper函数用于判断字符是否为大写字母(A-Z). ...

  3. C语言islower函数介绍、示例和实现

    文章目录 1.包含头文件 2.函数声明 3.功能说明 4.示例 5.自定义的islower函数的实现方法 6.获取视频教程 7.版权声明 C语言islower函数用于判断字符是否为小写字母(a-z). ...

  4. C语言isalnum函数介绍、示例和实现

    文章目录 1.包含头文件 2.函数声明 3.功能说明 4.示例 5.自定义的isalnum函数的实现方法 6.获取视频教程 7.版权声明 C语言isalnum函数用于判断字符是否为字母(a-z和A-Z ...

  5. java实现c语言的函数_C语言tolower函数介绍、示例和实现

    C语言tolower函数用于把大写字母转换为小写字母. 在本文中,我们先来介绍tolower函数的使用方法,然后编写一个自定义的_tolower函数,实现与tolower函数相同的功能. 1.包含头文 ...

  6. C语言isdigit函数介绍、示例和实现

    文章目录 1.包含头文件 2.函数声明 3.功能说明 4.示例 5.自定义的isdigit函数的实现方法 6.获取视频教程 7.版权声明 isdigit函数用于判断字符是否为数字(0-9). 在本文中 ...

  7. C语言isalpha函数介绍、示例和实现

    文章目录 1.包含头文件 2.函数声明 3.功能说明 4.示例 5.自定义的isalpha函数的实现方法 6.获取视频教程 7.版权声明 isalpha函数用于判断字符是否为字母(a-z和A-Z). ...

  8. c语言输出各种图形主函数咋写,C语言图形函数介绍篇

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 ----------------------------------- HERC         7            HERCMONOHI      ...

  9. C语言 strstr()函数介绍

    前言 C语言中,strstr()函数用于找到子串在一个字符串中第一次出现的位置,在string.h头文件中. 例如:char *strstr(const char *str1, const char ...

最新文章

  1. postgresql开发中可能有用的知识
  2. 分治习题--九章算法培训课第三章笔记
  3. PHP7天前的时间戳
  4. 【Machine Learning】决策树之ID3算法 (2)
  5. ios编译与android编译区别是什么,为iOS和Android编译C ++代码(XCode)。 这是真的吗?...
  6. python入门之前面内容拾遗
  7. unix/linux命令“ls -l”选项输出结果详解
  8. delphi StatusBar在状态栏中显示checkBox
  9. Android Studio 编译失败 Could not read entry ':app:processDebugManifest' from cache taskArtifacts.bin
  10. 【 马哥教育内部文档】-RPM制作指南
  11. CLI里面的秘密……(二)强命名、元数据以及文件结构(上半部分)
  12. 写在博士旅程之前|博士第一年|博士第三年|博士第四年
  13. 2月19日CTF记录
  14. IE浏览器无法打开HTTPS解决办法
  15. 高一下学期计算机考试知识点,高一年级信息技术期末考试复习题
  16. 霹雳灯双灯c语言程序,单片机霹雳游侠灯源程序
  17. Android 11.0 当安装多个播放器时,设置默认播放器播放歌曲
  18. oracle查询sql语句
  19. 英国4g网络频段_英国需要网络会议
  20. linux系统中软盘的名称,linux中软盘的使用

热门文章

  1. CTO丢给我《技术人员提高情商的18条军规》:再怼业务方,自己看着办!
  2. Oracle RAC安装过程中遇到“error while loading shared libraries libpthread.so.0”的解决办法...
  3. 生物信息学|机制驱动的可解释深度神经网络,用于药物组合的协同预测和通路反卷积
  4. MES管理系统的应用和好处有哪些
  5. 深度网络架构的设计技巧<一>:Can CNNs Be More Robust Than Transformers?
  6. 中国移动、中国联通、中国电信号码网段大全
  7. 通过一些免费的小工具营销
  8. HTTP协议调试工具汇总,你心目中应该是什么样的?
  9. [附源码]java毕业设计乡村振兴惠农推介系统
  10. 向内看——2020与2021,对这两年的复盘(4)