C语言(枚举类型)
目录
1、什么是枚举
2、枚举成员的类型
3、枚举类型的实际应用
1、什么是枚举
枚举的定义就是:枚举(Enumeration)是一种用户自定义的数据类型,用于定义一组具有离散值的符号常量。
那通俗一点说就是把一些固定的值,一一列举出来然后起个名字,比方说0是Flase,那么1就是True,枚举类型的应用类似于面向对象编程的思想,都是表示同一类型的数据,比方说一个按键,他的状态有按下和松开,那我就可以把这个按键的状态通过枚举类型让他变成一个独立的对象
enum SwitchState {
OFF,
ON
};
enum SystemState {
READY,
WAITING,
ERROR
};
enum OperationMode {
READ_MODE,
WRITE_MODE,
EDIT_MODE
};
2、枚举成员的类型
我们先看一下子枚举类型的基础语法
enum 枚举名
{
枚举值表
value1,value2,value3......
};
枚举的成员默认情况下都是整数类型,通常是int类型。这意味着每个枚举成员都会被赋予一个整数值,并且这些整数值从0开始递增。如果没有显式地指定枚举成员的值,那么第一个成员的值为0,第二个成员的值为1,依此类推。同时,可以显式地为枚举成员指定一个整数值,这个值可以是正整数、负整数或零。
enum Color {
RED, // 默认值为0
GREEN, // 默认值为1
BLUE, // 默认值为2
BLACK = -1, // 显式赋值为-1
WHITE = 10 // 显式赋值为10
};
枚举成员的访问是通过枚举类型名称和成员名称来进行的。一旦定义了一个枚举类型,可以使用该类型来声明变量,并通过枚举成员名称来设置和访问其值。
注意:不可以通过.操作符来访问枚举成员的值,因为枚举成员不是结构体或类的成员。枚举成员的访问是通过枚举类型名称和成员名称来进行的,而不是像结构体或类成员那样使用。
#include <stdio.h>
enum Color {
RED,
GREEN,
BLUE
};
int main() {
enum Color myColor; // 声明一个枚举变量
myColor = BLUE; // 设置枚举变量的值为BLUE
if (myColor == RED) {
printf("颜色是红色\n");
} else if (myColor == GREEN) {
printf("颜色是绿色\n");
} else if (myColor == BLUE) {
printf("颜色是蓝色\n");
}
return 0;
}
3、枚举类型的实际应用
首先吧,我们用枚举的目的是啥,就是为了代码整洁好看,我一眼看上去我就知道这是干啥的,那有人就问了,那我用define不行吗,我操那当然可以了,他俩其实用处都是差不多的,只不过枚举一次可以列举一堆,比较方便,而且他俩主要区别就在于作用域之类的比较抽象的概念,扯远了,其实最根本的原因就是debug里头能看枚举类型变量他看不了define的啊
在51单片机里头,有个头文件叫REGX52.H,打开这里头就能看见P1口还有P2口这些已经全部都被宏定义出来了,我们用户只需要进行给这个寄存器赋值就完事了,但是在reg51.h这个头文件中,这些P1P2口就没有被宏定义出来,我们声明这个头文件再去操作P1口是会报错的
通常是使用枚举类型,把P1口的P1_1直接杠到8的这些IO口自己定义一下,自己直接操作它了,下面以51中断的IE寄存器为例子,直接把这些状态给定义出来,然后我们对应的寄存器再调用这些值的时候我们就很清楚的知道这个寄存器现在是什么状态了