C语言中建立数据类型-枚举类型-学习笔记-55

引入

如果一个变量,我们只希望它的值在我们指定的值得范围内,例如week,我们只希望值在周一至周日之间,而不是星期八等特殊情况,我们就需要枚举类型。

枚举

如果一个变量,只有可能是几种类型的值,就可以定义为枚举类型。枚举就是把可能的值都列举出来,变量的值,只能在列举的这个值的范围内。
一般形式

enum 枚举类型名 {枚举元素列表}

使用枚举

我们来定义一个 weekday 变量类型

1
2
3
4
5
6
7
enum Weekday {sun , mon , tue , web , tuhe , fri , sat};
// 声明了一个枚举类型 Weekday , 枚举元素是sun~sat
enum Weekday workday;
// 定义了一个枚举类型变量 workday
workday = mon; // 合法,mon 是枚举元素之一
workday =sat; // 合法,sta 是枚举元素之一
workday = second; //非法,second不是枚举元素之一

我们大概清楚了,枚举常量是由程序员来设计的,用什么名字代表什么含义,都是根据需要耳而定,但值必须是声明的枚举元素之一,否则非法。

注意

(1)C 编译时,枚举类型的元素是按照常量处理的,所以我们把枚举元素称为枚举常量。

1
2
sun =1 ; 
// 非法,我们不能对枚举常量赋值

(2)每一个枚举元素都代表一个整数,从0开始。

1
2
3
4
5
6
enum Weekday {sun , mon , tue , web , tuhe , fri , sat};
// 声明了一个枚举类型 Weekday , 枚举元素是sun~sat
enum Weekday workday;
//以下两种赋值方式都是合法的,结果相同
workday = mon;
workday =1;

我们可以直接赋值给枚举变量整数,它会自动从枚举元素中找到对应的常量。

(3)枚举元素可以用来做判断比较

1
2
3
if(workday==mon)
if(workday==1)
if(workday>mon)

因为枚举类型的值是整数,所以,以上都是合法的。

例子

五色球,取三次,取出的球都是不同色的搭配方案有多少种,输出所有的搭配方案。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
#include <stdio.h>
enum Ball{red , yellow , blue , white , black};
enum Ball i,j,k,pri;
int n=0,loop;
int main(){
for(i=0;i<5;i++){
for(j=0;j<5;j++){
if(i!=j){
for(k=0;k<5;k++){
if (k!=i && k!=j){
n=n+1;
printf("第%d种", n);
for (loop=0;loop<3;loop++){
switch(loop){
case 0: pri=i;break;
case 1: pri=j;break;
case 2: pri=k;break;
default:break;
}
switch (pri){
case red:printf(" 红");break;
case yellow:printf(" 黄");break;
case blue:printf(" 蓝");break;
case white:printf(" 白");break;
case black:printf(" 黑");break;
default:break;
}
}
printf("\n");
}
}
}
}
}
printf("共有 %d 种取法\n", n);
return 0;
}

输出

第1种 红 黄 蓝
第2种 红 黄 白
第3种 红 黄 黑
第4种 红 蓝 黄
第5种 红 蓝 白
第6种 红 蓝 黑
第7种 红 白 黄
第8种 红 白 蓝
第9种 红 白 黑
第10种 红 黑 黄
第11种 红 黑 蓝
第12种 红 黑 白
第13种 黄 红 蓝
第14种 黄 红 白
第15种 黄 红 黑
第16种 黄 蓝 红
第17种 黄 蓝 白
第18种 黄 蓝 黑
第19种 黄 白 红
第20种 黄 白 蓝
第21种 黄 白 黑
第22种 黄 黑 红
第23种 黄 黑 蓝
第24种 黄 黑 白
第25种 蓝 红 黄
第26种 蓝 红 白
第27种 蓝 红 黑
第28种 蓝 黄 红
第29种 蓝 黄 白
第30种 蓝 黄 黑
第31种 蓝 白 红
第32种 蓝 白 黄
第33种 蓝 白 黑
第34种 蓝 黑 红
第35种 蓝 黑 黄
第36种 蓝 黑 白
第37种 白 红 黄
第38种 白 红 蓝
第39种 白 红 黑
第40种 白 黄 红
第41种 白 黄 蓝
第42种 白 黄 黑
第43种 白 蓝 红
第44种 白 蓝 黄
第45种 白 蓝 黑
第46种 白 黑 红
第47种 白 黑 黄
第48种 白 黑 蓝
第49种 黑 红 黄
第50种 黑 红 蓝
第51种 黑 红 白
第52种 黑 黄 红
第53种 黑 黄 蓝
第54种 黑 黄 白
第55种 黑 蓝 红
第56种 黑 蓝 黄
第57种 黑 蓝 白
第58种 黑 白 红
第59种 黑 白 黄
第60种 黑 白 蓝
共有 60 种取法

枚举最重要的就是

  1. 可以当做数值使用,也可以进行判断
  2. 值只能在枚举元素中选择,不能超出这个范围或者直接赋值

尾巴

这是我的个人学习笔记,主要是应付考研复习使用,充斥着一些吐槽和个人观点,并不严谨,欢迎大家参考、指正。


-------------The End-------------
欢迎请我喝咖啡哦~!