逍遥自在学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语言提供了多个不同的赋值运算符,包括基本的赋值运算符.复合赋值运算符以及 ...
随机推荐
- jQuery绑定方法
流程/*** * 1.文件命名 * jquery.banner.1.0.0.js * jquery.banner.js * 2.添加匿名函数 * (function(){})() * 3.给插件前后添 ...
- Kubernetes(k8s)实现IPv4/IPv6网络双栈
背景 如今IPv4IP地址已经使用完毕,未来全球会以IPv6地址为中心,会大力发展IPv6网络环境,由于IPv6可以实现给任何一个设备分配到公网IP,所以资源是非常丰富的. 配置hosts [root ...
- 强大的 apt-get 命令
强大的 apt-get 命令(小结) 一.ubuntu下管理软件最方便的非 apt-get 工具莫属了,它的常见用法稍微整理一下供以后参考(详细见 man apt-get ): 1.更新源,升级软件和 ...
- 实现自定义注解,实现ioc与aop
实现自定义注解主要分三个步骤: 1.定义自己的注解类. 注解类默认继承Annotation接口. 且注解内的属性默认public(要给别人用的) 属性可以定义默认值也就是不给你的属性传值也会拥有默认. ...
- [VMware]虚拟网络编辑器
虚拟网络编辑器 Vmware > 编辑 > 虚拟网络编辑器 VMnet0 VMnet0:用于虚拟桥接模式网络下的虚拟交换机 vmnet0: 实际上就是一个虚拟的网桥 这个网桥有很若干个端口 ...
- 1.封装PageHelper实现分页
前言 这几天想着动手将一些技术融合到项目中,昨天思考了会儿,想起了我与亲戚的对话:我说:"我想将若依项目完整的实现一遍",亲戚给我反馈到"你没必要完整复现若依项目,而且你 ...
- 用Abp实现两步验证(Two-Factor Authentication,2FA)登录(二):Vue网页端开发
@ 目录 发送验证码 登录 退出登录 界面控件 获取用户信息功能 项目地址 前端代码的框架采用vue.js + elementUI 这套较为简单的方式实现,以及typescript语法更方便阅读. 首 ...
- Redis缓冲区溢出及解决方案
缓冲区(buffer),是内存空间的一部分.也就是说,在内存空间中预留了一定的存储空间,这些存储空间用来缓冲输入或输出的数据,这部分预留的空间就叫做缓冲区. 一.Redis缓冲区溢出影响 在Redis ...
- 【实践篇】基于CAS的单点登录实践之路
作者:京东物流 赵勇萍 前言 上个月我负责的系统SSO升级,对接京东ERP系统,这也让我想起了之前我做过一个单点登录的项目.想来单点登录有很多实现方案,不过最主流的还是基于CAS的方案,所以我也就分享 ...
- dotnet初探:用miniapi创建一个自己的url
致谢 首先写在前面,非常感谢微软mvp桂素伟先生的技术分享,因为微软的文档大部分都如机器翻译般的生硬,让人难以读下去,正是他的无私分享为我的.net学习旅程提供了方向,非常感谢.如果大家对他比较感兴趣 ...