当前位置: 首页 > news >正文

C语言枚举类型详解

文章目录

  • 一. 枚举定义
  • 二. 实践理解
  • 三. 加强理解
  • 四.强化理解
    • 4.1 for循环
    • 4.2 枚举与switch结合
    • 4.3 枚举与显式赋值
    • 4.4 枚举与数组结合
  • 五 总结

一. 枚举定义

  • 枚举

  •  --将变量的值一一列举出来
    
  •  每一个枚举元素由系统定义了一个用序号表示的数值,从0开始,分别为0 1 2
    
  • 语法:

 enum 枚举名{
          枚举元素
 };

二. 实践理解

eg:比如一周有七天,我们就可以使用枚举类型来完善代码如下:

#include "stdio.h"
enum weekday{
    mon,tue,wed,thu,fri,sat,sun
};

int main(){
    enum weekday one;   //枚举声明
    printf("%d ",one); //默认指向第一个元素

    enum weekday two;
    two = wed;
    printf("%d ",two);
    return 0;
}


在这儿输出来的结果就可以得出我们的代码最后输出:

0 2

这也就说明我们最后输出的是整型.

  • 注意:
  • 如果你不想是0开始,可以把mon赋值1或者每一次输出加1
#include "stdio.h"
enum weekday{
    mon=1,tue,wed,thu,fri,sat,sun
};

int main(){
    enum weekday one=mon;
    printf("%d ",one); //默认指向第一个元素

    enum weekday two;
    two = wed;
    printf("%d ",two);
    return 0;
}


输出结果:

1 3

三. 加强理解

前面我们学过结构体的代码和编写结构体代码,不懂结构体点击这儿我们声明的时候都是:
c结构体 结构体类型 结构体变量名;
这就很麻烦;同时我们也不难发现,在枚举的过程中也是一样的,就会显得相当麻烦,因此我们要上升强度,我们要使用我们以前所用到过的typedef关键字来改一个名字

代码如下:


#include "stdio.h"
typedef enum {
    mon,tue,wed,thu,fri,sat,sun
}weekday;

int main(){
    weekday one;
    printf("%d ",one); //默认指向第一个元素

    weekday two;
    two = wed;
    printf("%d ",two);
    return 0;
}

不难发现,使用typedef关键字后我们的更容易理解代码了;

四.强化理解

4.1 for循环

题目:定义一个表示颜色的枚举类型,并输出每种颜色对应的整数值。

#include <stdio.h>

enum Color {
    RED,    // 0
    GREEN,  // 1
    BLUE    // 2
};

int main() {
    enum Color c;

    // 遍历枚举值
    for (c = RED; c <= BLUE; c++) {
        printf("颜色值: %d\n", c);
    }

    return 0;
}

结果:
颜色值: 0
颜色值: 1
颜色值: 2

4.2 枚举与switch结合

题目:定义一个表示星期的枚举类型,根据输入的枚举值输出对应的星期名称。

#include <stdio.h>

enum Weekday {
    MON, TUE, WED, THU, FRI, SAT, SUN
};

int main() {
    enum Weekday today;
    today = WED; // 假设今天是星期三

    switch (today) {
        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");
    }

    return 0;
}

结果:
星期三

4.3 枚举与显式赋值

题目:定义一个表示 HTTP 状态码的枚举类型,包括 200、404、500,并输出状态码对应的含义。

#include <stdio.h>

enum Status {
    OK = 200,
    NOT_FOUND = 404,
    SERVER_ERROR = 500
};

int main() {
    enum Status status;
    status = NOT_FOUND; // 假设当前状态是 404

    switch (status) {
        case OK:
            printf("请求成功\n");
            break;
        case NOT_FOUND:
            printf("资源未找到\n");
            break;
        case SERVER_ERROR:
            printf("服务器错误\n");
            break;
        default:
            printf("未知状态码\n");
    }

    return 0;
}

结果:
 资源未找到

4.4 枚举与数组结合

题目:定义一个表示季节的枚举类型,并将其与字符串数组结合,输出对应季节的名称。

#include <stdio.h>

enum Season {
    SPRING, SUMMER, AUTUMN, WINTER
};

int main() {
    const char *seasonNames[] = {"春天", "夏天", "秋天", "冬天"};
    enum Season season = AUTUMN; // 假设当前是秋天

    printf("当前季节是:%s\n", seasonNames[season]);

    return 0;
}

结果:
当前季节是:秋天

五 总结

	枚举的作用:提高代码可读性,为一组整数值赋予有意义的名称。
	枚举的特点:默认从 0 开始递增,支持显式赋值,本质上是整数。
	枚举的使用场景:表示有限的状态、类型或选项,如星期、季节、状态码等。
	伙伴们可以自己感受一下;创作不易,多多支持.

相关文章:

  • [特殊字符] 2025蓝桥杯备赛Day11——P11041 [蓝桥杯 2024 省 Java B] 报数游戏
  • Java 列表复制与对象引用
  • Python学习第二十五天
  • 10 个pygame经典小游戏
  • 装饰器模式 (Decorator Pattern)
  • SpringCloud消息总线:Bus事件广播与配置动态刷新
  • 基于硅基流动平台API构建定制化AI服务的实践指南
  • 大数据学习(88)-zookeeper实现的高可用(HA)
  • 【JSqlParser】Java使用JSqlParser解析SQL语句总结
  • 垃圾回收学习
  • “thrust“ has no member “device“
  • 视觉Transformer架构的前沿优化技术与高效部署
  • Linux 驱动总线中的 ACPI 设备匹配机制是怎么回事儿?【最大特点是设备的自动发现和热插拔性能良好】
  • vue 组件开发
  • C++运动控制卡开发实践指南
  • 【pm2运行ts的终极解决方案】使用pm2+ tsx 运行 TypeScript 文件指南
  • 3.25-3 request断言
  • 代码随想录算法训练营第二十天 | 字符串 | 反转字符串、替换空格、翻转字符串里的单词(很多基础方法)和左旋转字符串
  • Windows下docker使用教程
  • 【C++特殊类的设计】
  • 做国际网站需要多少钱/关键词排名优化公司地址
  • 长春网站建设论坛/互联网营销师怎么报名
  • 网站定制开发要多久/软文素材库
  • 网站的建设服务/seozou是什么意思
  • 官网网站建设公司/谷歌seo网站优化
  • a站下载安装/seo没什么作用了