枚举的简单介绍

目录

概念:

枚举的声明:

枚举的使用:

枚举的取值:

枚举的优点:

#define的功能:

而与#define对比,枚举的优点有:


概念:

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

⽐如我们现实⽣活中:

⼀周的星期⼀到星期⽇是有限的7天,可以⼀⼀列举

性别有:男、⼥、保密,也可以⼀⼀列举

⽉份有12个⽉,也可以⼀⼀列举

三原⾊,也是可以一一列举

这些数据的表⽰就可以使⽤枚举了。

 

枚举的声明:

enum Day//星期
{Mon,Tues,Wed,Thur,Fri,Sat,Sun
};
  • enum 表示枚举的关键字,不可更改。
  • Day 表示枚举的名字,或者说枚举的标签,可以更改。
  •  { }花括号内的是枚举常量,没有数据类型的修饰,枚举常量就是常量。

注意:枚举常量是用逗号隔开的,最后一个枚举常量不写逗号,这和数组的写法一样,数组:arr[]={1,2,3,4,5}; 

枚举的使用:

enum Day//星期
{Mon,Tues,Wed,Thur,Fri,Sat,Sun
};int main()
{enum Day d = Fri;return 0;
}

 枚举的用法,d就表示为枚举变量,并给d赋值,赋值为Fri 此时d就i代表着该枚举中的Fri

并且枚举声明只是一种类型没法再内存中开辟空间,只有在创建该枚举类型的变量并赋值时才算开辟了空间。

枚举的取值:

enum Day//星期
{Mon,Tues,Wed,Thur,Fri,Sat,Sun
};int main()
{printf("%d\n",Mon);printf("%d\n", Tues);printf("%d\n", Wed);return 0;
}

输出结果:

 

由此得知,枚举常量都是有值的,默认从0开始,依次递增1,当然在声明枚举类型的时候也可以赋初值。

enum Day//星期
{Mon = 1,Tues,Wed,Thur,Fri,Sat,Sun
};int main()
{printf("%d\n",Mon);printf("%d\n", Tues);printf("%d\n", Wed);printf("%d\n",Thur);printf("%d\n", Fri);printf("%d\n", Sat);printf("%d\n", Sun);return 0;
}

输出结果:

 

枚举的优点:

我们可以使⽤ #define 定义常量,为什么⾮要使⽤枚举?

#define的功能:

 define有一种代替的作用且是在预处理的时候进行代码的替换处理。

#define M 100int main()
{int m = M;return 0;
}

通过#define我们将M用100代替,因此最后m得到的值是100,而不是M。 

 

#define再预处理的时候就将代码进行了修饰。

而与#define对比,枚举的优点有:

  1. 增加代码的可读性和可维护性
  2. 和#define定义的标识符⽐较枚举有类型检查,更加严谨。
  3. 便于调试,预处理阶段会删除 #define 定义的符号。
  4. 使⽤⽅便,⼀次可以定义多个常量。
  5. 枚举常量是遵循作⽤域规则的,枚举声明在函数内,只能在函数内使⽤。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/116099.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

8.react18并发模式与startTransition(搜索高亮思路)

React 18 之前,渲染是一个单一的,不间断的,同步的事务,一旦渲染开始,就不能被中断 React 18引入并发模式,它允许你将标记更新作为一个transitions,这会告诉React他们可以被中断执行.这样可以将紧急任务先更新,不紧急任务后更新. 将任务给紧急任务先执行, 优先级低的任务后执行…

windows安装Scala

Windows安装Scala 下载地址:https://downloads.lightbend.com/scala/2.11.11/scala-2.11.11.zip 解压完成之后 配置环境变量

基于Springboot实现的Echarts图表

概述 ECharts是百度开源的一个前端组件。它是一个使用 JavaScript 实现的开源可视化库,可以流畅的运行在 PC 和移动设备上,兼容当前绝大部分浏览器(IE8/9/10/11,Chrome,Firefox,Safari等)&…

[CISCN 2019初赛]Love Math

文章目录 前言考点解题过程 前言 感慨自己实力不够,心浮气躁根本做不来难题。难得这题对我还很有吸引力,也涉及很多知识。只能说我是受益匪浅,总的来说加油吧ctfer。 考点 利用php动态函数的特性利用php中的数学函数实现命令执行利用php7的特…

学习Bootstrap 5的第二天

​​​​​​​ 目录 前言 网格系统 网格类 网格系统规则 网格的基本结构 网格选项 从堆叠到水平 自动布局列 超小型设备 超小型设备网格实例 自动布局列 小型设备 小型设备网格实例 自动布局列 中型设备 中型设备网格实例 自动布局列 大型设备 大型设备网…

【仿写spring之ioc篇】三、检查是否实现了Aware接口并且执行对应的方法

Aware接口 Aware接口中只是设置了对应的set方法,目前只定义了三个Aware 以BeanNameAware为例 package com.ez4sterben.spring.ioc.factory.aware;/*** bean名字清楚** author ez4sterben* date 2023/08/31*/ public interface BeanNameAware {/*** 设置beanName* …

stable diffusion实践操作-常见lora模型介绍

本文专门开一节写Lora相关的内容,在看之前,可以同步关注: stable diffusion实践操作 模型分两种,一种是sd大模型,一种是类似Lora的小模型 国内的是:https://www.liblibai.com 国外的是:https:/…

【kubernetes】Argo Rollouts -- k8s下的自动化蓝绿部署

蓝绿(Blue-Green)部署简介 在现代软件开发和交付中,确保应用程序的平稳更新和发布对于用户体验和业务连续性至关重要。蓝绿部署是一种备受推崇的部署策略,它允许开发团队在不影响用户的情况下,将新版本的应用程序引入生产环境。 蓝绿部署的核心思想在于维护两个独立的环…

Anaconda Prompt输入jupyter lab无反应

问题:Anaconda Prompt界面输入指令无反应 原因:公司电脑勒索病毒防御工具阻止了进程 解决:找到黑名单恢复进程

three.js(四):react + three.js

绘制多个立方体 1.搭建reactts 项目 npx create-react-app basics-demo --template typescriptreactts 的用法可参考此链接: https://react-typescript-cheatsheet.netlify.app/docs/basic/setup 2.安装three依赖 npm install three types/three --save3.安装路…

antd5:form组件底层封装库field-form-1.37.0启动

一开始node版本是18.16.0 npm install发现安装依赖成功 npm start发现启动出错 node:internal/crypto/hash:71this[kHandle] new _Hash(algorithm, xofLen);^Error: error:0308010C:digital envelope routines::unsupportedat new Hash (node:internal/crypto/hash:71:19)…

Git Bash 和 Git GUI中文汉化

目录 为什么要中文汉化?Git Bash的汉化Git GUI的汉化 为什么要中文汉化? 看到中文大概能猜出是什么意思,便于使用,特别是Git GUI,中文版的菜单很容易理解是要做什么,如下图: Git Bash的汉化 …

开箱报告,Simulink Toolbox库模块使用指南(五)——S-Fuction模块(C MEX S-Function)

文章目录 前言 C MEX S-Function 算法原理 原始信号创建 编写S函数 仿真验证 Tips 分析和应用 总结 前言 见《开箱报告,Simulink Toolbox库模块使用指南(一)——powergui模块》 见《开箱报告,Simulink Toolbox库模块使用…

Qt —UDP通信QUdpSocket 简介 +案例

1. UDP通信概述 UDP是无连接、不可靠、面向数据报(datagram)的协议,可以应用于对可靠性要求不高的场合。与TCP通信不同,UDP通信无需预先建立持久的socket连接,UDP每次发送数据报都需要指定目标地址和端口。 QUdpSocket…

CS144环境配置问题

使用wsl来做CS144实验,可能会在编译的时候遇到以下问题,很明显是找不到LIBPCAP,参考链接 使用sudo apt-get install libpcap-dev命令下载该库即可。 CMake Error: The following variables are used in this project, but they are set to N…

大数据HBase学习圣经:一本书实现HBase学习自由

学习目标:三栖合一架构师 本文是《大数据HBase学习圣经》 V1版本,是 《尼恩 大数据 面试宝典》姊妹篇。 这里特别说明一下:《尼恩 大数据 面试宝典》5个专题 PDF 自首次发布以来, 已经汇集了 好几百题,大量的大厂面试…

unity3d:功能验证,收集开源项目的工程合集

unity3d功能验证,和收集开源项目的工程合集 目录持续更新地址 【腾讯文档】UnityForTest目录 https://docs.qq.com/doc/DWm9HSkVhTGdyUUVo 源码 https://github.com/luoyikun/UnityForTest 动画 创建骨骼动画 BoneAnimation场景 代码创建Mesh,骨骼…

网络安全法+网络安全等级保护

网络安全法 2014年2月,中央网络安全和信息化领导小组成立,习主席当组长 2017年6月1日,网络安全法正式成立 网络安全是国家安全的重要组成部分没有网络安全就没有国家安全,没有信息化就没有现代化 网络安全法21条 网络安全法31条 …

使用Arrays.asList生成的List集合,操作add方法报错

早上到公司,刚到工位,测试同事就跑来说"功能不行了,报服务器异常了,咋回事";我一脸蒙,早饭都顾不上吃,要来了测试账号复现了一下,然后仔细观察测试服务器日志,发现报了一个…

Linux线程互斥

目录 一、线程不安全 1.线程不安全现象 2.线程不安全程序的特质 3.线程不安全程序的原因 二、线程互斥 1.基本概念 2.锁 (1)认识锁 (2)互斥锁的使用 (3)代码的改造 3.锁的本质 (1&a…