C语言——枚举

目录

1.枚举的定义

2.枚举成员的类型

3.枚举变量的访问

4.枚举的具体应用

4.1表示状态和标志位

4.2表示星期和月份

4.3状态机和控制流

5.枚举的作用


1.枚举的定义

枚举(Enumeration)是一种用户自定义的数据类型用于定义一组具有离散值的符号常量。枚举使得代码更加可读和易于理解,提高了代码的可读性和可维护性。

//枚举的语法
enum 枚举名称 {
    值1,
    值2,
    值3,
    ...
};

2.枚举成员的类型

枚举的成员默认情况下都是整数类型,通常是int类型。这意味着每个枚举成员都会被赋予一个整数值,并且这些整数值从0开始递增。如果没有显式地指定枚举成员的值,那么第一个成员的值为0,第二个成员的值为1,依此类推。同时,可以显式地为枚举成员指定一个整数值,这个值可以是正整数、负整数或零。并且显性定义枚举变量的值之后,后面的枚举变量在这个整数值的基础上依次递增1。

#include <stdio.h>

int main()
{
    enum day{
        Sunday,   //默认值为0
        Monday,   //依次递增
        Tuesday,
        Wednesday,
        Thursday=-1,
        Friday,
        Saturday,
    };
    
    printf("%d\n",Sunday);
    printf("%d\n",Monday);
    printf("%d\n",Thursday);
    printf("%d\n",Friday);
    return 0;
}

运行结果:

3.枚举变量的访问

 枚举成员的访问是通过枚举类型名称和成员名称来进行的。一旦定义了一个枚举类型,可以使用该类型来声明变量,并通过枚举成员名称来设置和访问其值。
  注意:不可以通过(.)操作符来访问枚举成员的值,因为枚举成员不是结构体或类的成员。枚举成员的访问是通过枚举类型名称和成员名称来进行的,而不是像结构体或类成员那样使用(.)。

#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;
}

4.枚举的具体应用

4.1表示状态和标志位

枚举可以用来表示状态和标志位。例如,使用枚举来表示开关的状态,如打开(ON)和关闭(OFF);或者表示系统的状态,如就绪(READY)、等待(WAITING)等;表示选项和模式,可以定义不同的操作模式,如读取模式、写入模式和编辑模式。

enum SwitchState {
    OFF,
    ON
};
enum SystemState {
    READY,
    WAITING,
    ERROR
};
enum OperationMode {
    READ_MODE,
    WRITE_MODE,
    EDIT_MODE
};

4.2表示星期和月份

enum Weekday {
    Sunday,
    Monday,
    Tuesday,
    Wednesday,
    Thursday,
    Friday,
    Saturday
};
enum Month {
    January,
    February,
    March,
    April,
    May,
    June,
    July,
    August,
    September,
    October,
    November,
    December
};

4.3状态机和控制流

enum State {
    IDLE,
    RUNNING,
    ERROR
};
enum State current_state = IDLE;
// 在状态机中根据当前状态执行不同的操作
switch (current_state) {
    case IDLE:
        // 执行空闲状态下的操作
        break;
    case RUNNING:
        // 执行运行状态下的操作
        break;
    case ERROR:
        // 执行错误状态下的操作
        break;
}

5.枚举的作用

我们可以使用#define定义常量,为什么非要使用枚举?

枚举的优点:

        1.增加代码的可读性和可维护性

        2.和#define定义的标识符比较,枚举有类型检查,更加严谨

        3.防止了命名污染(封装)

        4.便于调试

        5.使用方便,一次可以定义多个常量

总结一下:枚举是整型常数集合,代码不是一个人的工作,需要一个team,所以为了自己为了大家,能用枚举就用吧。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值