C语言基础教程之enum
枚举是 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相关推荐
- 什么是python基础教程-python基础教程之python是什么?概念解析
Python,是一种面向对象的解释型计算机程序设计语言,由荷兰人Guido van Rossum于1989年发明,第一个公开发行版发行于1991年. Python是纯粹的自由软件, 源代码和解释器CP ...
- python2.7使用教程_Python 2.7基础教程之:概要介绍
.. _tut-informal: ************************************************** An Informal Introduction to Pyt ...
- pgsql数据库默认配置事务类型_PostgreSQL基础教程之:初始化配置
PostgreSQL基础教程之:初始化配置 时间:2020-04-27 来源: PostgreSQL基础教程之:初始化配置 一.配置pg_hba.conf 先说明客户端认证配置文件pg_hba.con ...
- 易语言逐条读access数据_易语言操作数据教程之ACCESS实战视频教程
易语言操作数据教程之ACCESS实战教程第一讲 第一讲: 这一节我们讲ACCESS实战教程 实战教程: 分类的账号管理器 --------------------------------------- ...
- Linux入门基础教程之Linux下软件安装
Linux入门基础教程之Linux下软件安装 一.在线安装: sudo apt-get install 即可安装 如果在安装完后无法用Tab键补全命令,可以执行: source ~/.zshrc AP ...
- python可以处理多大的数据_科多大数据之Python基础教程之Excel处理库openpyxl详解...
原标题:科多大数据之Python基础教程之Excel处理库openpyxl详解 科多大数据小课堂来啦~Python基础教程之Excel处理库openpyxl详解 openpyxl是一个第三方库,可以处 ...
- python的excell库_扣丁学堂Python基础教程之Excel处理库openpyxl详解
扣丁学堂Python基础教程之Excel处理库openpyxl详解 2018-05-04 09:49:49 3197浏览 openpyxl是一个第三方库,可以处理xlsx格式的Excel文件.pipi ...
- python pymysql cursors_老雷python基础教程之pymysql学习及DB类的实现
老雷python教程之pymysql学习及DB类的实现 CREATE TABLE `sky_guest` ( `id` int(11) NOT NULL AUTO_INCREMENT, `title` ...
- c语言求a1到an的和,C语言菜鸟基础教程之a++与++a
(一)a++ 在C语言或其它语言中,++符号表示"自加",就是变量在原来的基础上加1. 例1: a = 0; a++; 则此时a的值为1. 同样的道理,--表示"自减&q ...
最新文章
- shell expect的简单用法
- volatile的作用(转自于http://www.csdn.net/)——今天差点忘记了!
- 活动 | 5 位大咖,手把手教你玩转数据驱动精细化运营
- mysql截取栏目字符_mysql截取小数点后1位
- Python基础教程之第3章 使用字符串
- python字典数据的特点_Python核心数据类型之字典15
- 【WinRT】使用 T4 模板简化字符串的本地化
- Wind River workbench介绍
- PS 渐变工具(锥形【线性渐变】和圆形【径向渐变】)
- PHP傻瓜式一键建站系统源码+无需授权
- autojs上传蓝奏云UI模板
- 关于TextView中修改部分字体颜色、大小方法的总结
- 微信企业号开发之 企业号人员身份认证与开发
- TcaplusDB亮相全球云计算大会 一举斩获优秀解决方案奖
- 排排坐,吃果果:数组的声明与初始化
- 引用 《金枝欲孽》精彩台词
- 中国航天日,让我们一起遨游浩瀚宇宙,拥抱星辰大海
- eclipse新建C/C++项目
- 多业务线亿级体量,携程的账务数据中台实践
- kindle推送服务
热门文章
- [转载] C++ STL之 vector的capacity和size属性区别
- [转载] python3 字符串比较函数_python3 字符串操作相关函数
- 【原创】Altium Designer Winter 09 笔记 之一
- Android源码分析(一)-----如何快速掌握Android编译文件
- ql的python学习之路-day3
- 《Linux命令行与shell脚本编程大全 第3版》
- BZOJ 1798 题解
- SharePoint 2013 Ajax 造成页面无法编辑
- 详细解说STL string
- cafffe---之params参数