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

C语言-枚举

概念

枚举是一个自定义数据类型,用于为一组整数常量赋予有意义的名字,使代码更易读、更易维护。可以将它理解为“给数字起别名

枚举成员的本质就是一系列整数常量。它们通过赋予有意义的名称,将数字“符号化”,使得代码更易读、更符合人类逻辑

语法结构

enum 枚举类型名 {成员1,          // 默认从0开始成员2,          // 前一个值+1成员3 = 值,     // 显式赋值...成员N//定义成员时也可以一行一行定义,使用习惯上是使用前一种方式成员1,成员2,成员3,
};  // 注意结尾的分号!
enum Weekday {Mon,   // 0Tue,   // 1Wed,   // 2Thu=7,   // 7Fri,   // 8Sat,   // 9Sun    // 10
};
枚举成员的本质上是数值,第一成员默认是0,后续依次加1
如果中途进行赋值,后续的值会在赋值的基础上加1

为什么要使用枚举

在代码中直接出现的、未经解释的数值常量

这些数字没有明确的含义或上下文说明,导致代码难以理解和维护

不使用枚举
#include <stdio.h>int main() {int status = 1;  // 1代表"失败"if (status == 0) {printf("程序成功!\n");} else if (status == 1) {printf("程序失败!\n");  // 这里会输出} else if (status == 2) {printf("程序等待中...\n");}// 问题1:数字0/1/2的意义不直观,需要查文档// 问题2:可能误赋值非法值(如status = 100)return 0;
}
使用枚举
#include <stdio.h>// 定义枚举类型,明确状态含义
typedef enum {SUCCESS,   // 0FAILURE,   // 1PENDING    // 2
} ProgramStatus;int main() {ProgramStatus status = FAILURE;  // 直接使用符号名if (status == SUCCESS) {printf("程序成功!\n");} else if (status == FAILURE) {printf("程序失败!\n");  // 这里会输出} else if (status == PENDING) {printf("程序等待中...\n");}// 优势1:代码自解释,无需注释// 优势2:若修改状态值,只需调整枚举定义// 优势3:编译器可部分检查非法赋值(如赋值字符串会报错)return 0;
}
http://www.xdnf.cn/news/8745.html

相关文章:

  • 一周学会Pandas2 Python数据处理与分析-Pandas2数据合并与对比-pd.concat():轴向拼接
  • wan2.1代码笔记
  • 简说IMM
  • AI 理论- 模型优化 - 注意力机制
  • 整平机技术进阶:从原理到实战的深度解析
  • MD5加密(Java)
  • 如何快速解决 java maven项目中jar冲突的问题
  • CAU人工智能class6 ResNet
  • 业务设计篇隐私合规检测URL 重定向资源拒绝服务配合项目
  • leetcode2466,爬楼梯变体,取模注意
  • 【第四篇】 SpringBoot整合第三方技术
  • 板凳-------Mysql cookbook学习 (六)
  • day25JS- es5面向对象、Proxy代理对象
  • ARM笔记-ARM指令集
  • PG Pebbles 靶机复现
  • 【C++】移动窗口
  • Java中使用Stream API优化for循环
  • [NOIP 2003 普及组] 麦森数 Java
  • AI要掌握的知识
  • Python_day35 模型可视化与推理
  • Java 内存模型(JMM)深度解析:理解多线程内存可见性问题
  • 网页 CSS美化2(详解)
  • Reason-ModernColBERT论文速览:内存受限设置下深度对比学习批量大小的扩展
  • IDA插件 MIPSROP的安装和使用方法
  • 电子人的分水岭-FPGA模电和数电
  • 大模型智能体入门扫盲——基于camel的概述
  • 嵌入式<style>设计模式
  • DeepSeek 赋能数字农业:从智慧种植到产业升级的全链条革新
  • 可编程运动控制器行业2025数据分析报告
  • CodeBuddy实现图片水印添加工具