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

【c语言】自定义类型:枚举类型【详解】

枚举类型

枚举类型的声明

  • 枚举顾名思义就是⼀⼀列举。
  • 把可能的取值⼀⼀列举。
  • ⽐如我们现实⽣活中
    • ⼀周的星期⼀到星期⽇是有限的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 Color//颜⾊
    {RED = 2,GREEN = 4,BLUE = 8
    };

枚举类型的优点

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

枚举类型的使用

enum Color//颜⾊
{RED = 1,GREEN = 2,BLUE = 4
};enum Color clr = GREEN;//使⽤枚举常量给枚举变量赋值
  • 那是否可以拿整数给枚举变量赋值呢?在C语⾔中是可以的,但是在C++是不⾏的,C++的类型检查⽐较严格。

相关文章:

  • Flutter与iOS和Android原生页面交互
  • 技术详解 | 黑客如何通过PDF文件分发恶意软件
  • 基于java的电影院售票网站
  • ajax的优缺点有哪些?
  • 每日一题:用c语言中指针实现除2操作
  • Centos7安装Docker与Docker-compose【图文教程】
  • Flutter iOS上架指南
  • 【JAVAEE学习】探究Java中多线程的使用和重点及考点
  • Python语言例题集(010)
  • 苍穹外卖07(缓存菜品,SpringCache,缓存套餐,添加购物车菜品和套餐多下单,查看购物车,清除购物车,删除购物车中一个商品)
  • vue 数据埋点
  • Node.js入门
  • 韩顺平 | 零基础快速学Python
  • UE RPC 外网联机(1)
  • 《极客时间TonyBai go语言第一课》学习笔记
  • 【MySQL经典案例分析】 Waiting for table metadata lock
  • 【附node操作实例】redis简明入门系列—字符串类型
  • Akka系列(七):Actor持久化之Akka persistence
  • avalon2.2的VM生成过程
  • canvas 绘制双线技巧
  • JWT究竟是什么呢?
  • Linux Process Manage
  • Spring Cloud Alibaba迁移指南(一):一行代码从 Hystrix 迁移到 Sentinel
  • vue自定义指令实现v-tap插件
  • 百度地图API标注+时间轴组件
  • 读懂package.json -- 依赖管理
  • 二维平面内的碰撞检测【一】
  • 前端相关框架总和
  • 实战:基于Spring Boot快速开发RESTful风格API接口
  • 实战|智能家居行业移动应用性能分析
  • 数组大概知多少
  • 函数计算新功能-----支持C#函数
  • ​【原创】基于SSM的酒店预约管理系统(酒店管理系统毕业设计)
  • # 睡眠3秒_床上这样睡觉的人,睡眠质量多半不好
  • #免费 苹果M系芯片Macbook电脑MacOS使用Bash脚本写入(读写)NTFS硬盘教程
  • $emit传递多个参数_PPC和MIPS指令集下二进制代码中函数参数个数的识别方法
  • $var=htmlencode(“‘);alert(‘2“); 的个人理解
  • (HAL)STM32F103C6T8——软件模拟I2C驱动0.96寸OLED屏幕
  • (Matlab)基于蝙蝠算法实现电力系统经济调度
  • (二十五)admin-boot项目之集成消息队列Rabbitmq
  • (六)Hibernate的二级缓存
  • (免费领源码)Java#Springboot#mysql农产品销售管理系统47627-计算机毕业设计项目选题推荐
  • (一)基于IDEA的JAVA基础12
  • (转)全文检索技术学习(三)——Lucene支持中文分词
  • (转)重识new
  • (轉貼) 資訊相關科系畢業的學生,未來會是什麼樣子?(Misc)
  • ./configure,make,make install的作用(转)
  • .equals()到底是什么意思?
  • .gitattributes 文件
  • .htaccess配置常用技巧
  • .locked1、locked勒索病毒解密方法|勒索病毒解决|勒索病毒恢复|数据库修复
  • .net下简单快捷的数值高低位切换
  • .NET性能优化(文摘)
  • .net之微信企业号开发(一) 所使用的环境与工具以及准备工作
  • @transaction 提交事务_【读源码】剖析TCCTransaction事务提交实现细节