一、前言

枚举是C语言中的一种基本数据类型,用于定义一组具有离散值的常量,它可以让数据更简洁、更易读。通常用于为程序中的一组相关的常量取名字,以便程序的可读性和维护性。定义一个枚举需要使用enum关键字,后面跟着枚举类型的名称,以及用大括号括起来的一组枚举常量,每个枚举常量可以用一个标识符来表示,也可以为它们指定一个整数值,如果没有指定,那么默认从0开始递增。

格式:

enum 枚举名称{枚举值1,枚举值2,...}

二、基本使用

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

#include <stdio.h>
enum Week {
	MON,TUE,WED,THU,FRI,SAT,SUN
};
int main()
{
	enum Week week = TUE;
	return 0;
}

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

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

输出:

C语言枚举的学习_枚举类型

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

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

输出:

C语言枚举的学习_枚举变量_02

三、具体使用

枚举可以在switch中使用。

#include <stdio.h>
enum Week {
	MON=1,TUE,WED,THU,FRI,SAT,SUN
};
int main()
{
	enum Week day;
	printf("请输入你喜欢的星期数:");
	scanf("%d", &day);
	switch (day)
	{
	case MON:
		printf("喜欢星期一\n");
		break;
	case TUE:
		printf("喜欢星期二\n");
		break;
	case WED:
		printf("喜欢星期三\n");
		break;
	case THU:
		printf("喜欢星期四\n");
		break;
	case FRI:
		printf("喜欢星期五\n");
		break;
	case SAT:
		printf("喜欢星期六\n");
		break;
	case SUN:
		printf("喜欢星期天\n");
		break;
	default:
		printf("输入错误\n");
		break;
	}
	return 0;
}

输出:

C语言枚举的学习_枚举变量_03

将整数转换为枚举:

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

输出:

C语言枚举的学习_枚举变量_04