- C编程教程
- C - 首页
- C语言基础
- C - 概述
- C - 特性
- C - 历史
- C - 环境设置
- C - 程序结构
- C - Hello World
- C - 编译过程
- C - 注释
- C - 词法单元
- C - 关键字
- C - 标识符
- C - 用户输入
- C - 基本语法
- C - 数据类型
- C - 变量
- C - 整数提升
- C - 类型转换
- C - 类型强制转换
- C - 布尔值
- C语言中的常量和字面量
- C - 常量
- C - 字面量
- C - 转义序列
- C - 格式说明符
- C语言中的运算符
- C - 运算符
- C - 算术运算符
- C - 关系运算符
- C - 逻辑运算符
- C - 位运算符
- C - 赋值运算符
- C - 一元运算符
- C - 自增和自减运算符
- C - 三元运算符
- C - sizeof 运算符
- C - 运算符优先级
- C - 其他运算符
- C语言中的决策
- C - 决策
- C - if 语句
- C - if...else 语句
- C - 嵌套 if 语句
- C - switch 语句
- C - 嵌套 switch 语句
- C语言中的循环
- C - 循环
- C - while 循环
- C - for 循环
- C - do...while 循环
- C - 嵌套循环
- C - 无限循环
- C - break 语句
- C - continue 语句
- C - goto 语句
- C语言中的函数
- C - 函数
- C - 主函数
- C - 按值调用函数
- C - 按引用调用函数
- C - 嵌套函数
- C - 可变参数函数
- C - 用户定义函数
- C - 回调函数
- C - 返回语句
- C - 递归
- C语言中的作用域规则
- C - 作用域规则
- C - 静态变量
- C - 全局变量
- C语言中的数组
- C - 数组
- C - 数组的特性
- C - 多维数组
- C - 将数组传递给函数
- C - 从函数返回数组
- C - 变长数组
- C语言中的指针
- C - 指针
- C - 指针和数组
- C - 指针的应用
- C - 指针运算
- C - 指针数组
- C - 指向指针的指针
- C - 将指针传递给函数
- C - 从函数返回指针
- C - 函数指针
- C - 指向数组的指针
- C - 指向结构体的指针
- C - 指针链
- C - 指针与数组
- C - 字符指针和函数
- C - 空指针
- C - void 指针
- C - 悬空指针
- C - 解引用指针
- C - 近指针、远指针和巨指针
- C - 指针数组的初始化
- C - 指针与多维数组
- C语言中的字符串
- C - 字符串
- C - 字符串数组
- C - 特殊字符
- C语言中的结构体和联合体
- C - 结构体
- C - 结构体和函数
- C - 结构体数组
- C - 自引用结构体
- C - 查找表
- C - 点(.)运算符
- C - 枚举(或 enum)
- C - 结构体填充和打包
- C - 嵌套结构体
- C - 匿名结构体和联合体
- C - 联合体
- C - 位域
- C - Typedef
- C语言中的文件处理
- C - 输入 & 输出
- C - 文件 I/O(文件处理)
- C 预处理器
- C - 预处理器
- C - 编译指示
- C - 预处理器运算符
- C - 宏
- C - 头文件
- C语言中的内存管理
- C - 内存管理
- C - 内存地址
- C - 存储类
- 其他主题
- C - 错误处理
- C - 可变参数
- C - 命令执行
- C - 数学函数
- C - static 关键字
- C - 随机数生成
- C - 命令行参数
- C编程资源
- C - 问答
- C - 快速指南
- C - 速查表
- C - 有用资源
- C - 讨论
C语言中的枚举(或enum)
C语言中的枚举(或enum)
C 枚举(enum)是一种枚举数据类型,它包含一组整型常量。枚举在您想要为整型常量分配用户定义的名称时非常有用。enum 关键字用于定义枚举。
定义和声明枚举类型
要声明和定义枚举(enum)数据类型,请使用enum关键字后跟枚举名称,并在花括号内分配所有值。
语法
这是您用于定义枚举类型的语法:
enum enum_name{const1, const2, ... };
枚举变量声明
声明枚举类型后,您还可以声明其变量以访问枚举成员(常量)。要声明枚举变量,请编写enum关键字后跟枚举名称(enum_name),然后是变量名称(var)。
语法
以下是声明枚举类型变量的语法:
enum enum_name var;
示例
让我们定义一个名为myenum的枚举类型:
enum myenum {val1, val2, val3, val4};
标识符值是无符号整数,它们从“0”开始。val1 指的是 0,val2 指的是 1,依此类推。
myenum类型的变量声明如下:
enum myenum var;
myenum类型的可能常数值在花括号内枚举。
更改枚举常数值
当我们声明枚举类型时,枚举的第一个常量默认初始化为 0,第二个常量初始化为 1,依此类推。我们还可以为枚举的任何常量分配任何整数值。
示例
在下面的示例中,我们正在声明枚举类型并将不同的值分配给枚举常量。
#include <stdio.h> enum status_codes { OKAY = 1, CANCEL = 0, ALERT = 2 }; int main() { // Printing values printf("OKAY = %d\n", OKAY); printf("CANCEL = %d\n", CANCEL); printf("ALERT = %d\n", ALERT); return 0; }
输出
它将产生以下输出:
OKAY = 1 CANCEL = 0 ALERT = 2
在 switch 语句中使用枚举
C 语言 switch case 语句 使用整数值。我们可以使用枚举类型来定义带有(或不带)整数值的常量,以便在 switch case 语句中使用它们。
示例
在下面的示例中,彩虹中的颜色被枚举。
#include <stdio.h> // Enum declaration enum colors { VIOLET, INDIGO, BLUE, GREEN, YELLOW, ORANGE, RED }; int main() { // Enum variable declaration enum colors color = YELLOW; // switch statement using enum switch (color) { case BLUE: printf("Blue color"); break; case GREEN: printf("Green color"); break; case RED: printf("Red color"); break; default: printf("Color other than RGB"); } return 0; }
输出
运行代码并检查其输出:
Color other than RGB
枚举(enum)类型的示例
练习以下示例以了解 C 编程语言中枚举(或 enum)类型的概念。
示例 1:枚举常量获取递增的整数值
C 将递增的整数值分配给每个常量,从“0”开始。当我们将val2分配给上述变量时,
var = val2;
分配给val2的整数值为 1。请查看以下示例:
#include <stdio.h> enum myenum {val1, val2, val3, val4}; int main(){ enum myenum var; var = val2; printf("var = %d", var); return 0; }
输出
它将产生以下输出:
var = 1
示例 2:枚举工作日
让我们声明一个枚举类型weekdays来枚举日期名称并将其值分配给枚举类型变量:
#include <stdio.h> int main(){ enum weekdays {Sun, Mon, Tue, Wed, Thu, Fri, Sat}; printf ("Monday = %d\n", Mon); printf ("Thursday = %d\n", Thu); printf ("Sunday = %d\n", Sun); }
输出
它将产生以下输出:
Monday = 1 Thursday = 4 Sunday = 0
示例 3:声明枚举类型变量
枚举数据类型的典型应用是将工作日分配给整数值。在此代码中,我们声明了一个weekdays枚举类型的变量:
#include <stdio.h> enum weekdays {Sun, Mon, Tue, Wed, Thu, Fri, Sat}; int main(){ enum weekdays day; day = Wed; printf("Day number of Wed is = %d", day); return 0; }
输出
当您运行此代码时,它将产生以下输出:
Day number of Wed is = 3
示例 4:枚举值默认从“0”开始
在此代码中,我们为日历年中月份的名称定义了一个枚举类型。默认情况下,C 将从“0”开始分配值。例如,在以下 C 程序中,Jan 获取值“0”,Feb 获取“1”,依此类推。
#include <stdio.h> enum months{Jan, Feb, Mar, Apr, May, Jun, Jul, Aug, Sep, Oct, Nov, Dec}; int main(){ for (int i = Jan; i <= Dec; i++) printf("Month No: %d\n", i); return 0; }
输出
运行代码并检查其输出:
Month No: 0 Month No: 1 Month No: 2 Month No: 3 Month No: 4 Month No: 5 Month No: 6 Month No: 7 Month No: 8 Month No: 9 Month No: 10 Month No: 11
示例 5:从 1 开始枚举
要从 1 开始枚举,请显式地将 1 分配给第一个值,编译器将为后续值分配递增的数字。
#include <stdio.h> enum months{Jan=1, Feb, Mar, Apr, May, Jun, Jul, Aug, Sep, Oct, Nov, Dec}; int main(){ for (int i = Jan; i <= Dec; i++) printf("Month No: %d\n", i); return 0; }
输出
运行代码并检查其输出:
Month No: 1 Month No: 2 Month No: 3 Month No: 4 Month No: 5 Month No: 6 Month No: 7 Month No: 8 Month No: 9 Month No: 10 Month No: 11 Month No: 12
示例 6:枚举 HTTP 状态代码
枚举类型中的常量不必具有递增的整数值。您可以为每个常量分配一个不同的唯一值,这些值可以按任何顺序排列。
在以下代码中,枚举类型枚举了HTTP 状态代码。
#include <stdio.h> enum status { OK = 200, BadRequest = 400, Unauthorized = 401, Forbidden = 403, NotFound = 404, InternalServerError = 500, }; int main(){ enum status code = InternalServerError; if (code == 500) printf("Internal Server Error has been encountered"); return 0; }
输出
运行代码并检查其输出:
Internal Server Error has been encountered
示例 7:为枚举常量分配固定数字
您可以为某些常量分配固定整数,让编译器为其他常量分配值。所有未分配的名称都将获得“前一个名称的值加一”的值。
#include <stdio.h> enum myenum {a, b = 5, c, d, e = 10, f}; int main(){ printf("a: %d\n", a); printf("b: %d\n", b); printf("c: %d\n", c); printf("d: %d\n", d); printf("e: %d\n", e); printf("f: %d\n", f); return 0; }
输出
运行代码并检查其输出:
a: 0 b: 5 c: 6 d: 7 e: 10 f: 11
枚举的应用
我们可以在 C 中的不同情况下使用枚举,其中一些列在下面:
- 存储常数值,例如工作日、月份、方向、颜色等。
- 枚举用于使用标志、状态代码等。
- 在 C 中使用 switch-case 语句时,可以使用枚举。