逍遥自在学C语言 | 枚举的那些事儿
前言
在C语言中,枚举是一种方便组织和表示一组相关常量的工具。枚举类型有助于提高代码的可读性和可维护性。本文将介绍C语言枚举的基本概念、语法和用法,以及一些高级技巧。
一、人物简介
- 第一位闪亮登场,有请今后会一直教我们C语言的老师 —— 自在。

- 第二位上场的是和我们一起学习的小白程序猿 —— 逍遥。

二、基本概念



枚举类型由enum关键字引入,并由一组常量构成。每个常量都称为枚举常量,它们在枚举中按顺序自动赋予整数值。
enum Season {
    SPRING,   // 0
    SUMMER,   // 1
    AUTUMN,   // 2
    WINTER    // 3
};
在上述示例中,我们定义了一个名为Season的枚举类型,并包含四个常量:SPRING,SUMMER,AUTUMN和WINTER。
它们的默认值分别为0、1、2和3。

二、使用枚举常量
我们可以使用枚举常量来声明变量,并为其赋予枚举中的某个值。
enum Season currentSeason = SUMMER;
在上述示例中,我们声明了一个名为currentSeason的变量,并将其赋值为SUMMER。
这样,我们就可以通过变量currentSeason来引用枚举常量。
三、比较和判断枚举常量
我们可以使用相等运算符(==)来比较枚举常量之间的值是否相等。
if (currentSeason == SPRING) {
    printf("It's spring!\n");
} else if (currentSeason == SUMMER) {
    printf("It's summer!\n");
} else if (currentSeason == AUTUMN) {
    printf("It's autumn!\n");
} else if (currentSeason == WINTER) {
    printf("It's winter!\n");
}
在上述示例中,我们使用if语句根据当前季节输出相应的消息。
此外,我们还可以使用switch语句根据枚举常量执行不同的代码块。
switch (currentSeason) {
    case SPRING:
        printf("It's spring!\n");
        break;
    case SUMMER:
        printf("It's summer!\n");
        break;
    case AUTUMN:
        printf("It's autumn!\n");
        break;
    case WINTER:
        printf("It's winter!\n");
        break;
    default:
        printf("Invalid season!\n");
        break;
}
在上述示例中,根据currentSeason的值,我们执行不同的代码块。
四、自定义枚举常量的值
默认情况下,枚举常量的值是按顺序自动赋予的。但是,我们也可以显式地为枚举常量指定值。
enum Month {
    JANUARY = 1,
    FEBRUARY,
    MARCH,
    APRIL,
    MAY,
    JUNE
};
在上述示例中,我们定义了一个名为Month的枚举类型,并为JANUARY指定了值1。其余的常量依次递增。
五、枚举作为函数参数和返回值
枚举常常被用作函数的参数和返回值,以便传递和表示一组选项或状态。
enum Result {
    SUCCESS,
    FAILURE
};
enum Result performOperation() {
    // 进行操作...
    if (/* 操作成功 */) {
        return SUCCESS;
    } else {
        return FAILURE;
    }
}
在上述示例中,我们定义了一个枚举类型Result,用于表示操作的结果。函数performOperation()执行某个操作,并根据操作的成功与否返回相应的枚举常量。
六、枚举嵌套
C语言中,枚举也可以嵌套在其他结构中,以创建更复杂的数据结构。
struct Person {
    char name[20];
    enum Gender {
        MALE,
        FEMALE
    } gender;
};
在上述示例中,我们定义了一个结构体Person,其中包含一个名为gender的嵌套枚举类型Gender。
小结
通过这篇文章,我们学会了
1、枚举的基本概念
2、枚举的常见用法和使用技巧
欢迎各位 点赞 收藏 评论,如有错误请留言指正,非常感谢!
逍遥自在学C语言 | 枚举的那些事儿的更多相关文章
- 逍遥自在学C语言 | 第一个C语言程序 九层之台起于垒土
		一.人物简介 第一位闪亮登场,有请今后会一直教我们C语言的老师 -- 自在. 第二位上场的是和我们一起学习的小白程序猿 -- 逍遥. 二.C语言简介 C语言是一种高级语言,运行效率仅次于汇编,支持跨平 ... 
- 逍遥自在学C语言 | 变量、常量与数据类型
		前言 一.人物简介 第一位闪亮登场,有请今后会一直教我们C语言的老师 -- 自在. 第二位上场的是和我们一起学习的小白程序猿 -- 逍遥. 二.基本数据类型 1.整型 C语言中的整型数据如下表所示: ... 
- 逍遥自在学C语言 | 算数运算符
		前言 一.人物简介 第一位闪亮登场,有请今后会一直教我们C语言的老师 -- 自在. 第二位上场的是和我们一起学习的小白程序猿 -- 逍遥. 二.算数运算符简介 C语言的算数运算符,是用来完成基本的算术 ... 
- 逍遥自在学C语言 | 关系运算符
		前言 一.人物简介 第一位闪亮登场,有请今后会一直教我们C语言的老师 -- 自在. 第二位上场的是和我们一起学习的小白程序猿 -- 逍遥. 二.构成和表示方式 关系运算符的作用是判断符号两边大小的关系 ... 
- 逍遥自在学C语言 | 逻辑运算符
		前言 一.人物简介 第一位闪亮登场,有请今后会一直教我们C语言的老师 -- 自在. 第二位上场的是和我们一起学习的小白程序猿 -- 逍遥. 二.构成和表示方式 逻辑运算符是用来比较和操作布尔值的运算符 ... 
- 逍遥自在学C语言 | 位运算符的基础用法
		前言 一.人物简介 第一位闪亮登场,有请今后会一直教我们C语言的老师 -- 自在. 第二位上场的是和我们一起学习的小白程序猿 -- 逍遥. 二.构成和表达方式 位运算符是一组用于在二进制数之间进行操作 ... 
- 逍遥自在学C语言 | 位运算符&的高级用法
		前言 在上一篇文章中,我们介绍了&运算符的基础用法,本篇文章,我们将介绍& 运算符的一些高级用法. 一.人物简介 第一位闪亮登场,有请今后会一直教我们C语言的老师 -- 自在. 第二位 ... 
- 逍遥自在学C语言  位运算符 "|" 的5种高级用法
		前言 在上一篇文章中,我们介绍了&运算符的高级用法,本篇文章,我们将介绍| 运算符的一些高级用法. 一.人物简介 第一位闪亮登场,有请今后会一直教我们C语言的老师 -- 自在. 第二位上场的是 ... 
- 逍遥自在学C语言 | 位运算符^的高级用法
		前言 在上一篇文章中,我们介绍了|运算符的高级用法,本篇文章,我们将介绍^ 运算符的一些高级用法. 一.人物简介 第一位闪亮登场,有请今后会一直教我们C语言的老师 -- 自在. 第二位上场的是和我们一 ... 
- 逍遥自在学C语言 | 赋值运算符
		前言 在C语言中,赋值运算符用于将一个值赋给变量 这个过程分为两个步骤: 计算赋值运算符右侧的表达式 将结果赋给左侧的变量. C语言提供了多个不同的赋值运算符,包括基本的赋值运算符.复合赋值运算符以及 ... 
随机推荐
- 全网最详细中英文ChatGPT-GPT-4示例文档-从0到1快速入门python代码解释应用——官网推荐的48种最佳应用场景(附python/node.js/curl命令源代码,小白也能学)
			目录 Introduce 简介 setting 设置 Prompt 提示 Sample response 回复样本 API request 接口请求 python接口请求示例 node.js接口请求示 ... 
- Feeder 一款 Mac 上的 RSS 阅读器,更优雅地跟踪最新的新闻和博客文章
			Feeder 是一款 Mac 上的 RSS 阅读器,它可以帮助用户轻松地订阅和管理 RSS 源,让用户可以轻松地跟踪最新的新闻和博客文章. 下载: FeederMac ⇲ 详细了解 Feeder 的界 ... 
- 一条SQL语句在MySQL中如何执行
			一条SQL语句在MySQL中如何执行 本篇文章会分析一个 sql 语句在 MySQL 中的执行流程,包括 sql 的查询在 MySQL 内部会怎么流转,sql 语句的更新是怎么完成的. 在分析之前我会 ... 
- 深入理解 python 虚拟机:字节码灵魂——Code obejct
			深入理解 python 虚拟机:字节码灵魂--Code obejct 在本篇文章当中主要给大家深入介绍在 cpython 当中非常重要的一个数据结构 code object! 在上一篇文章 深入理解 ... 
- 安装KubeOperator并导入现有集群进行管理
			安装KubeOperator并导入现有集群进行管理 介绍 KubeOperator 是一个开源的轻量级 Kubernetes 发行版,专注于帮助企业规划.部署和运营生产级别的 Kubernetes 集 ... 
- JUC(一)JUC简介与Synchronized和Lock
			1 JUC简介 JUC就是java.util.concurrent的简称,这是一个处理线程的工具包,JDK1.5开始出现的. 进程和线程.管程 进程:系统资源分配的基本单位:它是程序的一次动态执行过程 ... 
- Linux grep命令详细教程
			[本文出自天外归云的博客园] 简介 Linux grep命令是一种非常常用的文本搜索工具,它可以在给定的文件中搜索匹配的字符串,并输出匹配的行.grep是全称"global search r ... 
- 【解决方法】正常游览Flash页面,解决主流游览器的不支持问题(如Edge,Firefox)
			环境: 工具:360游览器-某特殊版本 系统版本:Windows 10 视频链接:[[解决方法]正常浏览flash页面,解决主流浏览器的不支持问题] https://www.bilibili.com/ ... 
- 高级Java程序员必问,Redis事务终极篇
			1. 简介 1.1 什么是Redis事务 Redis事务(Transaction)通过将多个Redis操作封装为一个原子性的操作序列,确保在事务执行过程中,不会受到其他客户端的干扰.从而在保证数据一致 ... 
- 【故障补牢】贪吃的 Bing 爬虫,限量供应的应对措施
			相对于[故障公告],[故障补牢]分享的是园子在发生故障后采取的亡羊补牢措施. 在上次被微软 Bing 爬宕机后(详见 [故障公告]被放出的 Bing 爬虫,又被爬宕机的园子),我们采取了2个应对措施, ... 
