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

【C语言进阶:自定义类型详解】枚举

本节重点内容:

  • 枚举类型的定义
  • 枚举的优点
  • 枚举的使用

⚡枚举类型的定义

枚举:将可能的取值一一列举。比如:一周的天数、性别、一年的月份等等可以使用枚举来将其可能出现情况列举出来。

枚举类型的基本使用:

enum Sex//性别
{
    //枚举的可能取值,默认是从0开始,递增1
    //列举出来的情况本质上是数字
    //
    MALE,
    FEMALE,
    SECRET
};

int main()
{ 
    printf("%d\n", MALE);
    printf("%d\n", FEMALE);
    printf("%d\n", SECRET);
    return 0;
}

运行结果如下:

 当然,我们也可以将这些枚举常量在定义时附上初始值,操作如下:

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

enum Sex//性别
{
    //枚举的可能取值,默认是从0开始,递增1
    //列举出来的情况本质上是数字
    //枚举常量
    MALE = 5,
    FEMALE,
    SECRET
};

int main()
{ 
    printf("%d\n", MALE);
    printf("%d\n", FEMALE);
    printf("%d\n", SECRET);
    return 0;
}
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

enum Sex//性别
{
    //枚举的可能取值,默认是从0开始,递增1
    //列举出来的情况本质上是数字
    //枚举常量
    MALE,
    FEMALE = 5,
    SECRET
};

int main()
{ 
    printf("%d\n", MALE);
    printf("%d\n", FEMALE);
    printf("%d\n", SECRET);
    return 0;
}

运行结果如下:


⚡枚举的优点

枚举的优点:

  • 增加代码的可读性和可维护性。比如:写小游戏的菜单
  • 和#define定义的标识符比较枚举有类型检查,更加严谨。比如:#define定义的标识符常量是没有类型的。而使用枚举定义,其定义的常量是枚举类型,也是一种类型。
  • 防止了命名污染(封装)。
  • 便于调试。比如:创建枚举变量后调试可以在监视窗口看到枚举常量的值。
  • 使用方便,一次可以定义多个常量。

⚡枚举的使用

只能拿枚举常量给枚举变量赋值,才不会出现类型的差异。

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

enum Sex//性别
{
    //枚举的可能取值,默认是从0开始,递增1
    //列举出来的情况本质上是数字
    //
    MALE,
    FEMALE,
    SECRET
};

int main()
{ 
    enum Sex s = MALE;
    return 0;
}

感谢大家能够看完这篇博客,创作时长,小伙伴们觉得我的博客对你有帮助,不妨留下你的点赞的收藏,关注我,带你了解不一样的C语言。

98b76a6f4a9c4ca88fd93da1188ac6f9.gif


http://www.kler.cn/a/7296.html

相关文章:

  • vue3 如何调用第三方npm包内部的 pinia 状态管理库方法
  • vue3点击按钮el-dialog对话框不显示问题
  • 基于opencv制作GUI界面
  • 消息中间件分类
  • Python 使用Django进行单元测试unittest
  • 计算机网络WebSocket——针对实习面试
  • 8个全球性编程比赛,天才程序员的梦想舞台
  • 零中频接收机中的杂散信号
  • 信息收集与运用
  • 蓝桥杯基础9:BASIC-6试题 杨辉三角形
  • 算法竞赛进阶指南0x61 最短路
  • 第一批被AI淘汰的人已经出现,你距离失业还有多远?
  • 【ansible】实施任务控制
  • 分享一个免梯子的GPT,刷题和学习的好帮手
  • 论文笔记 | 标准误聚类问题
  • 【剪枝】个人练习-Leetcode-167. Two Sum II - Input Array Is Sorted
  • Rsync远程同步
  • 黑客在供应链攻击中破坏 3CX 桌面应用程序
  • 大数据与互联网的结合
  • 复旦微ZYNQ7020全国产替代方案设计
  • 10道关于垒球规则的判断题·你答对了多少
  • 形式语言总结
  • Vue中的slot插槽
  • 管理科学与工程案例分析:企业战略管理
  • 【 第六章 拦截器,注解配置springMVC,springMVC执行流程】
  • 高级威胁的攻击和防护A P T