当前位置: 首页 > news >正文

自定义类型枚举

目录

  • 枚举类型
    • 枚举类型的声明
    • 扩展
    • 枚举类型的优点
      • 枚举的优点

感谢各位大佬对我的支持,如果我的文章对你有用,欢迎点击以下链接
🐒🐒🐒 个人主页
🥸🥸🥸 C语言
🐿️🐿️🐿️ C语言例题
🐣🐓🏀 python

枚举类型

枚举类型的声明

枚举顾名思义就是⼀⼀列举。
把可能的取值⼀⼀列举。
比如我们现实生活中:
一周的星期一到星期日是有限的7天,可以⼀⼀列举
性别有:男、女、保密,也可以⼀⼀列举
月份有12个月,也可以⼀⼀列举
三种颜色,也是可以意义列举
这些数据的表示就可以使用枚举了

enum Day//星期
{Mon,Tues,Wed,Thur,Fri,Sat,Sun
};
enum Sex//性别
{MALE,FEMALE,SECRET
};
enum Color//颜⾊
{RED,GREEN,BLUE
};

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

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

这些可能取值都是有值的,默认从0开始,依次递增1

我们来看一个例子

enum Sex//性别
{MALE,FEMALE,SECRET
};
int main()
{printf("%d\n", MALE);printf("%d\n", FEMALE);printf("%d\n", SECRET);return 0;
}

在这里插入图片描述
如果我们想要给枚举常量赋值的话,其实是不行的
在这里插入图片描述
我们对一个枚举的变量(注意不是常量)也是可以赋值的,但这里的赋值不是像上面那样赋值,如图
在这里插入图片描述
枚举变量在上面的代码中有三种可能
1:MALE 2:FEMALE 3:SECRET,所以要对枚举的变量赋值应该从枚举的成员中选一个进行赋值

但是我们非要赋一些其他的值呢?

在这里插入图片描述

我们可以看到这里并没有报错,但是我们把文件后缀改为cpp再试试
在这里插入图片描述
因为我们赋的数字其实是整形类型,而变量是枚举类型,因为c语言要求没那么严格,但是换成c++后要求严格了就会报错

当然在声明枚举类型的时候是可以赋初值的

enum Color//颜⾊
{RED = 2,GREEN = 4,BLUE = 8
};

在这里插入图片描述

扩展

不知道各位有没有想过枚举常量的内存大小是多少?

我们在之前又说过枚举常量括号中的类型默认从0开始,依次递增1

每次对枚举变量进行赋值也只有括号中的那几种可能中的其中一种,因此枚举变量只代表着括号中的一个成员

括号中的成员取值既然是从0开始,依次增加1,说明这些数字的大小和括号中成员的大小是一样的,那我们就可以大胆推测这些数字的大小是4个字节,也就是整形类型的大小.
在这里插入图片描述

枚举类型的优点

我们可以使用 #define 定义常量,为什么非要使用枚举?
(因为#define 会直接将标识号给替换)
我们举个例子
在这里插入图片描述
在这里插入图片描述
这里会报错,原因就是我们将里面的成员直接替换成了数字

枚举的优点

  1. 增加代码的可读性和可维护性
  2. 枚举与#define定义的标识符(没有类型)比较枚举有类型检查,更加严谨
  3. 便于调试,预处理阶段会删除 #define 定义的符号
  4. 使用方便,一次可以定义多个常量
  5. 枚举常量是遵循作用域规则的,枚举声明在函数内,只能在函数内使用
http://www.lryc.cn/news/217846.html

相关文章:

  • PHP foreach 循环跳过本次循环
  • lua-web-utils库
  • 大数据毕业设计选题推荐-热门旅游景点数据分析-Hadoop-Spark-Hive
  • Oracle-执行计划
  • Pytho入门教程之Python运行的三种方式
  • 如何修改docker容器中的MySQL数据库的密码?
  • JOSEF约瑟 数显三相电压继电器 HJY-931A/D 导轨安装
  • 第6章_多表查询
  • 吴恩达《机器学习》4-1->4-5:多变量线性回归
  • 搜索引擎系统简要分析
  • 蓝桥杯(C++ 扫雷)
  • LuatOS-SOC接口文档(air780E)--mobile - 蜂窝网络
  • c++创建函数对象的不同方式
  • python实现从字符串中识别出省市区信息
  • GCN火车票识别项目 P1 火车票识别项目介绍 Pytorch LSTM/GCN
  • shell script 的默认变量$0,$1,$2...,参数偏移的shift
  • 2023年【危险化学品经营单位安全管理人员】复审考试及危险化学品经营单位安全管理人员模拟考试题库
  • Java 正则表达式重复匹配篇
  • 0009Java安卓程序设计-ssm基于android手机设计并实现在线点单系统APP
  • react_14
  • 批量导出 PPT的备注到一个txt文本中
  • 文本内容转换成语音播放的工具:Speech Mac
  • 运维知识点-MySQL从小白到入土
  • 【蓝桥杯基础题】门牌制作
  • MyBatis底层原理(小白版本)
  • 水经微图Web版从入门到精通
  • IntelliJ IDEA 2023 最新版如何试用?IntelliJ IDEA 2023最新版试用方法及验证ja-netfilter配置成功提示
  • LeetCode541. Reverse String II
  • ios原生分享
  • 【Ubuntu】安装chrome之后无法启动