枚举是 C 语言中的一种基本数据类型,它可以让数据更简洁,更易读。

枚举语法定义格式为:

enum 枚举名 {枚举元素1,枚举元素2,……};
接下来我们举个例子,比如:一星期有 7 天,如果不用枚举,我们需要使用 #define 来为每个整数定义一个别名:

#define MON  1
#define TUE  2
#define WED  3
#define THU  4
#define FRI  5
#define SAT  6
#define SUN  7

这个看起来代码量就比较多,接下来我们看看使用枚举的方式:

enum DAY
{MON=1, TUE, WED, THU, FRI, SAT, SUN
};

这样看起来是不是更简洁了。

注意:第一个枚举成员的默认值为整型的 0,后续枚举成员的值在前一个成员上加 1。我们在这个实例中把第一个枚举成员的值定义为 1,第二个就为 2,以此类推。

可以在定义枚举类型时改变枚举元素的值:


enum season {spring, summer=3, autumn, winter};

没有指定值的枚举元素,其值为前一元素加 1。也就说 spring 的值为 0,summer 的值为 3,autumn 的值为 4,winter 的值为 5

枚举变量的定义
前面我们只是声明了枚举类型,接下来我们看看如何定义枚举变量。

我们可以通过以下三种方式来定义枚举变量

1、先定义枚举类型,再定义枚举变量

enum DAY
{MON=1, TUE, WED, THU, FRI, SAT, SUN
};
enum DAY day;

2、定义枚举类型的同时定义枚举变量

enum DAY
{MON=1, TUE, WED, THU, FRI, SAT, SUN
} day;

3、省略枚举名称,直接定义枚举变量

enum
{MON=1, TUE, WED, THU, FRI, SAT, SUN
} day;
实例
#include <stdio.h>enum DAY
{MON=1, TUE, WED, THU, FRI, SAT, SUN
};int main()
{enum DAY day;day = WED;printf("%d",day);return 0;
}

以上实例输出结果为:

3
在C 语言中,枚举类型是被当做 int 或者 unsigned int 类型来处理的,所以按照 C 语言规范是没有办法遍历枚举类型的。

不过在一些特殊的情况下,枚举类型必须连续是可以实现有条件的遍历。

以下实例使用 for 来遍历枚举的元素:

实例

#include <stdio.h>enum DAY
{MON=1, TUE, WED, THU, FRI, SAT, SUN
} day;
int main()
{// 遍历枚举元素for (day = MON; day <= SUN; day++) {printf("枚举元素:%d \n", day);}
}

以上实例输出结果为:

枚举元素:1
枚举元素:2
枚举元素:3
枚举元素:4
枚举元素:5
枚举元素:6
枚举元素:7

以下枚举类型不连续,这种枚举无法遍历。

enum
{ENUM_0,ENUM_10 = 10,ENUM_11
};

枚举在 switch 中的使用:

实例

#include <stdio.h>
#include <stdlib.h>
int main()
{enum color { red=1, green, blue };enum  color favorite_color;/* 用户输入数字来选择颜色 */printf("请输入你喜欢的颜色: (1. red, 2. green, 3. blue): ");scanf("%u", &favorite_color);/* 输出结果 */switch (favorite_color){case red:printf("你喜欢的颜色是红色");break;case green:printf("你喜欢的颜色是绿色");break;case blue:printf("你喜欢的颜色是蓝色");break;default:printf("你没有选择你喜欢的颜色");}return 0;
}

以上实例输出结果为:

请输入你喜欢的颜色: (1. red, 2. green, 3. blue): 1
你喜欢的颜色是红色
将整数转换为枚举
以下实例将整数转换为枚举:

实例

#include <stdio.h>
#include <stdlib.h>int main()
{enum day{saturday,sunday,monday,tuesday,wednesday,thursday,friday} workday;int a = 1;enum day weekend;weekend = ( enum day ) a;  //类型转换//weekend = a; //错误printf("weekend:%d",weekend);return 0;
}

以上实例输出结果为:

weekend:1

C语言基础教程之enum相关推荐

  1. 什么是python基础教程-python基础教程之python是什么?概念解析

    Python,是一种面向对象的解释型计算机程序设计语言,由荷兰人Guido van Rossum于1989年发明,第一个公开发行版发行于1991年. Python是纯粹的自由软件, 源代码和解释器CP ...

  2. python2.7使用教程_Python 2.7基础教程之:概要介绍

    .. _tut-informal: ************************************************** An Informal Introduction to Pyt ...

  3. pgsql数据库默认配置事务类型_PostgreSQL基础教程之:初始化配置

    PostgreSQL基础教程之:初始化配置 时间:2020-04-27 来源: PostgreSQL基础教程之:初始化配置 一.配置pg_hba.conf 先说明客户端认证配置文件pg_hba.con ...

  4. 易语言逐条读access数据_易语言操作数据教程之ACCESS实战视频教程

    易语言操作数据教程之ACCESS实战教程第一讲 第一讲: 这一节我们讲ACCESS实战教程 实战教程: 分类的账号管理器 --------------------------------------- ...

  5. Linux入门基础教程之Linux下软件安装

    Linux入门基础教程之Linux下软件安装 一.在线安装: sudo apt-get install 即可安装 如果在安装完后无法用Tab键补全命令,可以执行: source ~/.zshrc AP ...

  6. python可以处理多大的数据_科多大数据之Python基础教程之Excel处理库openpyxl详解...

    原标题:科多大数据之Python基础教程之Excel处理库openpyxl详解 科多大数据小课堂来啦~Python基础教程之Excel处理库openpyxl详解 openpyxl是一个第三方库,可以处 ...

  7. python的excell库_扣丁学堂Python基础教程之Excel处理库openpyxl详解

    扣丁学堂Python基础教程之Excel处理库openpyxl详解 2018-05-04 09:49:49 3197浏览 openpyxl是一个第三方库,可以处理xlsx格式的Excel文件.pipi ...

  8. python pymysql cursors_老雷python基础教程之pymysql学习及DB类的实现

    老雷python教程之pymysql学习及DB类的实现 CREATE TABLE `sky_guest` ( `id` int(11) NOT NULL AUTO_INCREMENT, `title` ...

  9. c语言求a1到an的和,C语言菜鸟基础教程之a++与++a

    (一)a++ 在C语言或其它语言中,++符号表示"自加",就是变量在原来的基础上加1. 例1: a = 0; a++; 则此时a的值为1. 同样的道理,--表示"自减&q ...

最新文章

  1. shell expect的简单用法
  2. volatile的作用(转自于http://www.csdn.net/)——今天差点忘记了!
  3. 活动 | 5 位大咖,手把手教你玩转数据驱动精细化运营
  4. mysql截取栏目字符_mysql截取小数点后1位
  5. Python基础教程之第3章 使用字符串
  6. python字典数据的特点_Python核心数据类型之字典15
  7. 【WinRT】使用 T4 模板简化字符串的本地化
  8. Wind River workbench介绍
  9. PS 渐变工具(锥形【线性渐变】和圆形【径向渐变】)
  10. PHP傻瓜式一键建站系统源码+无需授权
  11. autojs上传蓝奏云UI模板
  12. 关于TextView中修改部分字体颜色、大小方法的总结
  13. 微信企业号开发之 企业号人员身份认证与开发
  14. TcaplusDB亮相全球云计算大会 一举斩获优秀解决方案奖
  15. 排排坐,吃果果:数组的声明与初始化
  16. 引用 《金枝欲孽》精彩台词
  17. 中国航天日,让我们一起遨游浩瀚宇宙,拥抱星辰大海
  18. eclipse新建C/C++项目
  19. 多业务线亿级体量,携程的账务数据中台实践
  20. kindle推送服务

热门文章

  1. [转载] C++ STL之 vector的capacity和size属性区别
  2. [转载] python3 字符串比较函数_python3 字符串操作相关函数
  3. 【原创】Altium Designer Winter 09 笔记 之一
  4. Android源码分析(一)-----如何快速掌握Android编译文件
  5. ql的python学习之路-day3
  6. 《Linux命令行与shell脚本编程大全 第3版》
  7. BZOJ 1798 题解
  8. SharePoint 2013 Ajax 造成页面无法编辑
  9. 详细解说STL string
  10. cafffe---之params参数