C语言,枚举

看一个需要

举个例子,比如:一星期有 7 天, 请定义数据表示星期一到星期天.

传统的方法

使用#define 来完成

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

分析:这个看起来代码量较多,并且不好管理 => 枚举

基本介绍

1)枚举是 C 语言中的一种构造数据类型,它可以让数据更简洁,更易读, 对于只有几个有限的特定数据,可以 使用枚举.
2)枚举对应英文(enumeration, 简写 enum)
3)枚举是一组常量的集合,包含一组有限的特定的数据
4)枚举语法定义格式为

enum 枚举名 {枚举元素 1,枚举元素 2,……};

快速入门

在这里插入代码片

在这里插入图片描述

枚举的遍历

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

#include<stdio.h>

enum DAY { 
	MON=1, TUE, WED, THU, FRI, SAT, SUN //如果没有给赋值,就会按照顺序赋值 
} day; // 表示 定义了一个枚举类型 enum Day ,同时定义了一个变量 day(类型是 enum DAY)

void main(){
	
	// 遍历枚举元素 
	//day++ 会给出警告,但是可以运行
	
	for(day = MON; day <= SUN; day++){
		printf("\n %d",day);
	}
}

switch 中使用枚举

C 语言中,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("你没有选择你喜欢的季节"); 
	}
	
}

在这里插入图片描述

枚举类型使用注意事项和细节

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

	enum DAY { 
		MON, TUE, WED, THU=9, FRI, SAT, SUN //如果没有给赋值,就会按照顺序赋值 
	} day; // 表示 定义了一个枚举类型 enum Day ,同时定义了一个变量 day(类型是 enum DAY) 
	
	说明 FRI, SAT, SUN 就是 10, 11, 12

3) 枚举变量的定义的形式 1-先定义枚举类型,再定义枚举变量

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

enum DAY day;

4)枚举变量的定义的形式 2-定义枚举类型的同时定义枚举变量

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

5) 枚举变量的定义的形式 3-省略枚举名称,直接定义枚举变量

enum { 
	MON=1, TUE, WED, THU, FRI, SAT, SUN 
} day; // 这样使用枚举,该枚举类型只能使用一次.

6) 可以将整数转换为对应的枚举值
不能直接将一个整数,赋给枚举变量,但是可以将整数,转成枚举类型,再赋给枚举变量.

enum SEASONS {
		SPRING=1, SUMMER, AUTUMN, WINTER
	}season; 
	
	int n = 4; 
	season = (enum SEASONS) n;
 
 	printf("season=:%d",season);
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值