逍遥自在学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语言提供了多个不同的赋值运算符,包括基本的赋值运算符.复合赋值运算符以及 ...
随机推荐
- AES算法流程
明文分组长度: \(128bit\) 密钥长度: \(128bit\) 迭代轮数: \(10轮\) 加密和解密均在\(4*4\)的矩阵上进行,每个格子\(1\)个字节,共\(16\)个字节\(128b ...
- GKCTF X DASCTF应急挑战杯-Maple_root-Writeup
GKCTF X DASCTF应急挑战杯-Maple_root-Writeup 参赛队员: b4tteRy, x0r, f1oat 最终成绩:2285 最终排名:27 总结 经过最近几次类线下的演练,感 ...
- Android Banner - ViewPager 02
Android Banner - ViewPager 02 现在来给viewpager实现的banenr加上自动轮播 自动轮播的原理,使用handler的延迟消息来实现. 自动轮播实现如下内容 开始轮 ...
- 创建用户认证授权的 kubeconfig 文件
创建用户认证授权的 kubeconfig 文件 当我们安装好集群后,如果想要把 kubectl 命令交给用户使用,就不得不对用户的身份进行认证和对其权限做出限制. 下面以创建一个 cby 用户并将其绑 ...
- 搭建DHCP服务,实现自动分配地址
DHCP实现原理 DHCP定义 DHCP(Dynamic Host Configuration Protocol,动态主机配置协议)是一个局域网的网络协议,使用UDP协议工作.它是一种流行的Clien ...
- 迁移学习《Pseudo-Label : The Simple and Efficient Semi-Supervised Learning Method for Deep Neural Networks》
论文信息 论文标题:Pseudo-Label : The Simple and Efficient Semi-Supervised Learning Method for Deep Neural Ne ...
- [数据库]MYSQL之存储过程
一 存储过程的特点 MySQL 5.0 版本开始支持存储过程 1.1 定义 存储过程(Stored Procedure)是一种在数据库中存储复杂程序,以便外部程序调用的一种数据库对象. 存储过程是为了 ...
- sip消息拆包原理及组包流程
操作系统 :CentOS 7.6_x64 freeswitch版本 :1.10.9 sofia-sip版本: sofia-sip-1.13.14 freeswitch使用sip协议进行通 ...
- 近万字总结:Java8 Stream流式处理指南
总结/朱季谦 在实际项目当中,若能熟练使用Java8 的Stream流特性进行开发,就比较容易写出简洁优雅的代码.目前市面上很多开源框架,如Mybatis- Plus.kafka Streams以及F ...
- Solon2 常用注解之 @ProxyComponent 用法说明
在 Solon 提倡"克制"的原则下,托管组件分为: 普通组件 代理组件(即 @ProxyComponent 注解的类).代理的细节可以看下<动态代理的本质> . 之所 ...