自定义类型枚举

news2024/11/25 12:37:30

目录

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

感谢各位大佬对我的支持,如果我的文章对你有用,欢迎点击以下链接
🐒🐒🐒 个人主页
🥸🥸🥸 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.coloradmin.cn/o/1169937.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

取消elementUI中table的选中状态和勾选状态赋值

一、取消所有选中 1、表格上绑定ref 2、清空用户选中数据 this.$refs.loopRef.clearSelection()二、勾选状态赋值 获取数据,flag为true则是选中状态,并将前面勾选框设为选中状态 this.listData.forEach(item> {if(row.flag1){this.$refs.loopRef.to…

elasticsearch索引按日期拆分

1.索引拆分原因 如果单个索引数据量过大会导致搜索变慢,而且不方便清理历史数据。 例如日志数据每天量很大,而且需要定期清理以往日志数据。例如原索引为sc_all_system_log,现按天拆分索引sc_all_system_log20220902,sc_all_syste…

IOS渲染流程之提交图层数据至RenderThread进程

大致链路 UIView/CALayer---->CoreAnimation./Core Graphics/Core Image---->GPU Drive-->GPU 图层树/视图树 一个UIView(视图)对应一个CALayer(图层),CALayer对应显示的数据其有个content代表Bitamp&#…

答题测评考试小程序的效果如何

在线答题系统是一种在线练习、考试、测评的智能答题系统,适用于企业培训、测评考试、知识竞赛、模拟考试等场景,管理员可任意组题、随机出题,答题者成功提交后,系统自动判分。 多种题目类型,两种答题模式 练习模式&a…

漏洞复现--大华ICC readpic任意文件读取漏洞

免责声明: 文章中涉及的漏洞均已修复,敏感信息均已做打码处理,文章仅做经验分享用途,切勿当真,未授权的攻击属于非法行为!文章中敏感信息均已做多层打马处理。传播、利用本文章所提供的信息而造成的任何直…

Linux--动静态库

1.背景知识 软硬链接: 软硬链接的创建 软链接:ln -s 文件名 s_link 结果: 可以看到text1.txt和s_link->text.txt这两个文件地址,也就是inode编号是不一样的,且硬链接数都为1; 硬链接:l…

VR实景导航在医院内使用有哪些好处?

近年来,VR全景逐渐普及开来,被大众所熟知,而VR全景在医院的应用也是逐渐广泛起来,对于医院各种错综复杂的楼层,VR全景的VR实景导航功能,能够将患者代入一个三维、逼真的虚拟环境中,帮助患者快速…

企业数据库中了360勒索病毒怎么办,勒索病毒解密,数据恢复

随着网络技术的不断发展,越来越多的企业开始走向数字化办公,网络技术的发展给企业的生产运行提供了强有力的支撑。但随之而来的网络安全威胁也不断增加,数据安全成为众多企业关心的主要话题。近期,云天数据恢复中心的工程师接到很…

Pytorch网络模型训练

现有网络模型的使用与修改 vgg16_false torchvision.models.vgg16(pretrainedFalse) # 加载一个未预训练的模型 vgg16_true torchvision.models.vgg16(pretrainedTrue) # 把数据分为了1000个类别print(vgg16_true) 以下是vgg16预训练模型的输出 VGG((features): S…

apollo云实验:定速巡航场景仿真调试

定速巡航场景仿真调试 概述启动仿真环境仿真系统修改默认巡航速度 实验目的福利活动 主页传送门:📀 传送 概述 自动驾驶汽车在实现落地应用前,需要经历大量的道路测试来验证算法的可行性和系统的稳定性,但道路测试存在成本高昂、…

基于LDA主题+协同过滤+矩阵分解算法的智能电影推荐系统——机器学习算法应用(含python、JavaScript工程源码)+MovieLens数据集(三)

目录 前言总体设计系统整体结构图系统流程图 运行环境模块实现1. 数据爬取及处理2. 模型训练及保存1)协同过滤2)矩阵分解3)LDA主题模型 3. 接口实现1)流行电影推荐2)相邻用户推荐3)相似内容推荐 相关其它博…

submit使用share buffer传参问题及解决办法

有个程序,因为处理逻辑复杂,时间长,所以启用了job。 本来是直接把耗时的核心函数 in background。 但是这种情况有个麻烦,不方便检查报错信息,只能用SM58监控。 所以改为了open job submit program。因为可以sm37查看…

selenium自动化测试入门 —— 上传文件

selenium无法识别非web的控件,上传文件窗口为系统自带,无法识别窗口元素。 上传文件有两种场景:input控制上传和非input控件上传。 大多数情况都是input控件上传文件,只有非常少数的使用自定义的非input上传文件。 一、input控…

快手群控软件可同时控制多个账号!

随着社交媒体的普及,越来越多的人开始使用快手平台来分享自己的生活、展示才艺、开展商业活动等,然而,要想在快手上获得更多的关注和收益,需要投入大量的时间和精力,这时,快手群控软件应运而生,…

2023红帽论坛:探索数字化转型的下一步

作为全球领先的企业级开源解决方案提供商,红帽的一举一动在业界都备受关注。 近日,以“探索下一步”为主题,2023红帽论坛在北京盛大揭幕。 红帽全球副总裁兼大中华区总裁曹衡康在主题演讲中表示,智能创新并不是一个单纯依赖技术的…

d3dcompiler_47.dll是什么?d3dcompiler_47.dll缺失修复教程

d3dcompiler_47.dll丢失是一个比较常见的问题,尤其是在玩一些大型游戏或者使用一些图形处理软件时。这个问题可能会让你感到非常困扰,因为它可能会导致你的程序无法正常运行。但是,别担心,我在这里为你提供了四种解决方案&#xf…

【代码】【5 二叉树】d2

关键字: 先序遍历输出第k个元素、从右向左释放所有叶子结点、二叉树高度

硬件知识积累 CAN 总线接口

1. CAN 总线协议的介绍 控制器局域网总线(CAN,Controller Area Network)是一种用于实时应用的串行通讯协议总线,它可以使用双绞线来传输信号,是世界上应用最广泛的现场总线之一。CAN协议用于汽车中各种不同元件之间的通…

微信小程序上传图片和上传视频的组件失效

微信小程序上传图片和上传视频的组件失效 今天公司的小程序展示图片和视频文字的页面上传图片组件突然失效,之前用的好好的,突然所有使用都都发现用不了,以为是代码出现问题,反复查了很久。换了一个openid居然就可以了&#xff0…

学Python,一个月从小白到大神?看你怎么学!

Python是一门超强大而且超受欢迎的编程语言。它被用在各种领域,比如网站开发、数据分析、人工智能和机器学习。学会Python会给你创造很多职业机会,所以绝对是值得一试的。 但你有没有过这样的梦想:一个月时间,从Python小白变成Py…