1.枚举类型

1.枚举数据类型是C语言中一种构造数据类型,可以让数据更加简洁,更易读,对于只有几个特定的数据,可以使用枚举类型

2.枚举对应英文enumeration,简写为enum

3.枚举是一组常量的集合,包含一组有限的特定的数据

4.枚举语法的定义格式为

enum 枚举名 {枚举元素}

1.1 实例1

使用枚举表示一个星期

// 传统方法
#define MON 1;
#define TUE 2;
#define WeD 3;
#define THU 4;
#define FRI 5;
#define SAT 6;
#define SUN 7;
#include <stdio.h>
void main() { enum DAY
{
// 这里DAY 就是枚举类型, 包含了7个枚举元素
// 没有赋值,就按照顺序给值 0 1 2 3 4 ...
// 枚举类型默认是从0开始的
// 给初始值之后会从初始值递增
MON=1, TUE=2, WED=3, THU=4, FRI=5, SAT=6, SUN=7
};
enum DAY day; // enum DAY 是枚举类型, day 就是枚举变量
day = WED; //给枚举变量 day 赋值,值就是某个枚举元素
printf("%d",day);// 3 , 每个枚举元素对应一个值
getchar();
}

1.2 枚举类型声明

如同结构体(struct)和共用体(union)一样,枚举变量也可用不同的方式说明,即先定义后说明,同时定义说明或直接说明。设有变量a,b,c被说明为上述的weekday,可采用下述任一种方式:

enum weekday{sun,mon,tue,wed,thu,fri,sat};	//定义枚举类型
enum weekday a,b,c; //定义3个枚举类型的变量
enum weekday{sun,mon,tue,wed,thu,fri,sat}a,b,c; //定义枚举类型的同时,定义3个变量
enum{sun,mon,tue,wed,thu,fri,sat}a,b,c; //枚举名可省略,但后面不能再定义新的枚举变量

1.3 枚举类型取别名

// typeof可以把枚举类型定义一个别名
typedef enum weekday //此处的weekday为枚举名
{
Mon = 0,
Tues,
Wed,
Thurs,
Fri,
Sat,
Sun
} weekday; //此处的weekday为enum weekday的别名 weekday today, tomorrow; //枚举类型的变量,即enum weekday类型
// 枚举名可以省略
typedef enum //省略枚举名
{
Mon = 0,
Tues,
Wed,
Thurs,
Fri,
Sat,
Sun
}weekday; //此处的weekday为枚举类型的别名 weekday today, tomorrow; //枚举类型的变量,即enum weekday类型
// typeof使用的时候不可以省略别名
typedef enum //省略枚举名
{
Mon = 0,
Tues,
Wed,
Thurs,
Fri,
Sat,
Sun
}weekday; //此处的weekday为枚举类型的别名 weekday today, tomorrow; //枚举类型的变量,即enum weekday类型
  • 不能定义同名的枚举类型
  • 不能包含同名的枚举成员

1.3 枚举类型的遍历

C 语言中,枚举类型是被当做 int 或者 unsigned int 类型来处理的, 枚 举类型必须连续是可以实现有条件的遍历。以下实例使用 for 来遍历枚举的元素。

#include <stdio.h>

enum DAY {
MON=1, TUE, WED, THU, FRI, SAT, SUN //如果没有给赋值,就会按照顺序赋值
} day; // 表示 定义了一个枚举类型 enum Day ,同时定义了一个变量 day(类型是 enum DAY) int main() { // 遍历枚举元素, 枚举的每个元素都对应数值
//day++ 会给出警告,但是可以运行
for (day = MON; day <= SUN; day++) { //SUN = 7
printf("枚举元素:%d \n", day); // 1, 2, 3, 4,5,6,7
}
//day = FRI;
//printf("%d", day); // 10
getchar();
return 0; }

1.4 枚举类型在switch中的应用

#include <stdio.h>

void  main() {
enum SEASONS {SPRING=1, SUMMER, AUTUMN, WINTER}; //定义枚举类型 enum SEASONS
enum SEASONS season;//定义了一个枚举类型变量 season(类型 enum SEASONS )
printf("请输入你喜欢的季节: (1. spring, 2. summer, 3. autumn 4 winter): ");
scanf("%d", &season);
switch (season) {
case SPRING:
printf("你喜欢的季节是春天");
break;
case SUMMER:
printf("你喜欢的季节是夏天");
break;
case AUTUMN:
printf("你喜欢的季节是秋天");
break;
case WINTER:
printf("你喜欢的季节是冬天");
break;
default:
printf("你没有选择你喜欢的季节");
}
getchar();
getchar(); }

补充:C语言枚举类型的更多相关文章

  1. [编程] C语言枚举类型(Enum)

    C语言枚举类型(Enum):定义形式为:enum typeName{ valueName1, valueName2, valueName3, ...... };enum 类型名{名字1,名字2} 枚举 ...

  2. C语言枚举类型(Enum)深入理解

    在实际编程中,有些数据的取值往往是有限的,只能是非常少量的整数,并且最好为每个值都取一个名字,以方便在后续代码中使用,比如一个星期只有七天,一年只有十二个月,一个班每周有六门课程等. 以每周七天为例, ...

  3. C语言枚举类型enum-(转)-温故而知新

    在实际编程中,有些数据的取值往往是有限的,只能是非常少量的整数,并且最好为每个值都取一个名字,以方便在后续代码中使用,比如一个星期只有七天,一年只有十二个月,一个班每周有六门课程等. 以每周七天为例, ...

  4. C语言枚举类型(Enum)

    在实际编程中,有些数据的取值往往是有限的,只能是非常少量的整数,并且最好为每个值都取一个名字,以方便在后续代码中使用,比如一个星期只有七天,一年只有十二个月,一个班每周有六门课程等. 以每周七天为例, ...

  5. C语言枚举类型

    在实际编程中,有些数据的取值往往是有限的,只能是非常少量的整数,并且最好为每个值都取一个名字,以方便在后续代码中使用,比如一个星期只有七天,一年只有十二个月,一个班每周有六门课程等.以每周七天为例,我 ...

  6. C语言——枚举类型用法

    1.枚举的定义 enum 枚举名{ 枚举元 素1,枚举元素2,枚举元素3...}: 2.使用枚举类型的好处 增加程序的可读性,我们都知道在计算机中所有信息都是用二进制来表示的,如果你用二进制来表示某件 ...

  7. Java枚举类型的用法

    JDK1.5引入了新的类型——枚举.在 Java 中它虽然算个“小”功能,却给我的开发带来了“大”方便. 1.用法一:常量 在JDK1.5 之前,我们定义常量都是: public static fia ...

  8. 枚举类型enum详解——C语言

    enum enum是C语言中的一个关键字,enum叫枚举数据类型,枚举数据类型描述的是一组整型值的集合(这句话其实不太妥当),枚举型是预处理指令#define的替代,枚举和宏其实非常类似,宏在预处理阶 ...

  9. C语言--enum,typedef enum 枚举类型详解

    原文:http://z515256164.blog.163.com/blog/static/32443029201192182854300/ 有改动 C语言详解 - 枚举类型 注:以下全部代码的执行环 ...

  10. C语言第十讲,枚举类型简单说明

    C语言第十讲,枚举类型简单说明 一丶C语言中的枚举类型(ENUM) 在我们实际工作中,或者编写代码中.我们有的时候会用固定的值.而且不是很多. 这个时候就可以使用枚举了.如果我们使用#define显然 ...

随机推荐

  1. LoadRunner——创建场景及运行场景(三)

    1. 创建场景 场景:用户并发访问的策略,包含用户数.加载用户的时间等 启动第二个组件 : 控制台 (controller) 方式1: 开始->所有程序->HPLoadRunner-> ...

  2. Excel批量加粗关键词(宏)

    代码如下: Sub 批量加粗() Dim a As Range Dim b As String b = InputBox("请输入要加粗的关键字") For Each a In A ...

  3. Windows10一劳永逸的禁止更新/恢复更新

    之前发表过一篇文章Windows10彻底关闭自动更新,这篇文章相对复杂了些.而且还是有一定几率会触发从而自动打开更新.下面讲的就是怎么一次性永久关闭更新,即使触发了更新,也不能下载更新,从而达到真正的 ...

  4. Redis事件机制(未写完)

    Redis服务器是一个事件驱动程序,服务器需要处理以下两类事件: 文件事件:Redis通过套接字与客户端连接,文件事件是服务器对套接字操作的抽象. 时间事件:Redis服务器中的一些操作需要给定的时间 ...

  5. 自己动手从零写桌面操作系统GrapeOS系列教程——23.从硬盘读取文件

    学习操作系统原理最好的方法是自己写一个简单的操作系统. 本讲代码文件为boot.asm,要读取的文件为data.txt. 一.在FAT16系统中读取文件的流程 在GrapeOS中用到的文件少且小,所有 ...

  6. Django笔记九之model查询filter、exclude、annotate、order_by

    在接下来四五篇笔记中,将介绍 model 查询方法的各个细节,为我们的查询操作提供各种便利. 本篇笔记将介绍惰性查找.filter.exclude.annotate等方法,目录如下: 惰性查找 fil ...

  7. day3 函数的定义和调用,练习编写简单的程序(记录2)

    一.值传递.指针传递.引用传递 值传递: 在值传递中,函数的形参是由实参的副本初始化的,也就是说,函数内部操作的是实参的一个拷贝.值传递适用于传递简单数据类型(如整数.浮点数.字符等)以及小型结构体等 ...

  8. ACM-学习记录-数论

    GCD,LCM 定理 a.b两个数的最大公约数乘以它们最小公倍数等于a和b的乘积 axb=GCD(a,b)xLCM(a,b) 据此定理,求3与8的最小公倍数可以为:LCM(3,8)=3x8divGCD ...

  9. Cesium案例(六) Time Dynamic Wheels

      Cesium.Ion.defaultAccessToken =         "token";       const viewer = new Cesium.Viewer( ...

  10. pandas之设置显示格式

    在用 Pandas 做数据分析的过程中,总需要打印数据分析的结果,如果数据体量较大就会存在输出内容不全(部分内容省略)或者换行错误等问题.Pandas 为了解决上述问题,允许你对数据显示格式进行设置. ...