枚举(enum)

本文详细介绍了C语言中的枚举类型,包括枚举类型的定义、枚举常量的值分配规则、枚举数组和枚举指针的概念及使用方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

enum 枚举类型 {枚举值1名=数值,...,枚举值n名=数值};

这里先提一下关键字和标识符的区别:

关键字:编译器自己预定的,具备固定含义的保留字,在程序中不能作为一般的标识符使用。

              例如:int ,double,if,for,while等,在代码中一般用蓝色进行标注。

标识符:在程序中出现的变量名,常量名,类名,对象名,函数名等统称为标识符。

               标识符的命名规则和变量类似:开头必须是字母或者下划线,不能是数字

 

一、枚举类型

枚举类型:一种用户自定义数据类型,用关键字enum来声明和定义。

C语言提供了一种专门的数据类型来表示这样一类只能取特定值的数据,那就是枚举类型。

比如:月份(只有十二个月),星期(有七天)等等。

枚举是一种基本数据类型(有枚举常量枚举变量,类似于整型、浮点型、字符型,而结构体和共用体是一种高级数据类型。

枚举常量用来直接表示枚举数据,而枚举变量用来保存枚举常量。

enum week{Monday=1,Tuesday,Wednesday=4,Thursday,Friday,Saturday,Sunday};

如上面的枚举元素Monday,Tuesday,...都是枚举常量。

在程序中,所有的枚举常量按照整型数值进行输出,默认的,第一个标识符(枚举常量)的值是0后面元素的值依次加1.

当然,也可以人为的指定,如上面人为指定第一个元素值为1,第三个元素值为4。

1)如果第一个枚举常量的值没有指定,那么它的值就是0.

2)没有指定的数值的枚举常量的值是紧随指定数值的枚举常量的值,依次递增的

举例1:

int main()
{
	enum week{Monday=1,Tuesday,Wednesday=4,Thursday,Friday,Saturday,Sunday};
	//enum weekday{Mon,Tue=4,Wed,Thu,Fri,Sat,Sun};
	//enum week day1=Thursday;
	//enum weekday day2=Fri;
	printf("Tuesday = %d\n",Tuesday);
	printf("Thursday = %d\n",Thursday);
	printf("Friday = %d\n",Friday);
	printf("Saturday = %d\n",Saturday);
	printf("Sunday = %d\n",Sunday);
	system("pause");
	return 0;
}

运行结果如下:

可以看出,将Monday指定为1后,后面元素依次加1,所以Tuesday=2.

在Wednesday指定为4后,后面的元素又依次加1,Thursday=5,Friday=6,Saturday=7,Sunday=8.

 

二、枚举数组和指针

枚举数组:用来保存多个枚举数据的。枚举类型名 枚举数组名[表达式];

enum week days[5];

定义了一个可以保存5个week枚举数据的枚举数组。

enum week days[5]={Tuesday,Friday,Monday,Friday,Monday};

给枚举数组days进行了如上的初始化。

枚举指针:用来保存枚举数据所在内存的地址。

enum week *pday;//定义枚举指针变量
enum week day;//定义枚举类型变量
pday=&day;//给指针变量赋值


 

### 枚举enum)在编程中的用法 枚举类型是一种用户自定义的数据类型,通常用于表示一组固定的常量集合。这种数据结构可以提高程序的可读性和可维护性[^2]。 #### Java 中的 Enum 使用 在 Java 中,`enum` 是一种特殊的类,它可以被看作是一个具有固定成员列表的类。这些成员通常是可变的对象实例。由于 `enum` 的特性,它们可以直接用于 `switch` 语句中[^1]: ```java public class Main { public static void main(String[] args) { DayOfWeek day = DayOfWeek.MONDAY; switch (day) { case MONDAY: System.out.println("Start of the work week."); break; case FRIDAY: System.out.println("End of the work week."); break; default: System.out.println("Another day..."); } } enum DayOfWeek { MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY } } ``` 上述代码展示了如何利用 `enum` 定义一周的日子,并将其作为参数传递给 `switch` 语句来执行同的逻辑操作。 #### C/C++ 中的 Enum 使用 在 C 和 C++ 编程语言里,`enum` 关键字主要用于创建一系列命名整数常量。尽管像高级语言那样功能强大,但它仍然有助于增强代码清晰度和减少错误可能性[^3]: ```c #include <stdio.h> int main(void){ enum Color { RED=0xFF0000, GREEN=0x00FF00, BLUE=0x0000FF }; int selectedColor = GREEN; if(selectedColor == RED){ printf("#%X\n",RED); }else if(selectedColor == GREEN){ printf("#%X\n",GREEN); }else{ printf("#%X\n",BLUE); } return 0; } ``` 在这个例子中,我们定义了一个名为 `Color` 的枚举类型并初始化了一些颜色值。接着通过简单的条件判断打印出对应的颜色十六进制码。 #### Python 中的 Enum 使用 从 Python 3.4 开始引入了标准库模块 `enum` 来支持枚举类型的声明与使用;而在 Python 3.10 及之后版本,则进一步增强了内置的支持程度使其更接近传统意义上的枚举行为模式: ```python from enum import Enum class Season(Enum): SPRING = 'spring' SUMMER = 'summer' AUTUMN = 'autumn' WINTER = 'winter' def describe_season(season:Season)->str: match season.name.lower(): case "spring": description="Flowers bloom." case "summer": description="Sun shines brightly." case _ : description=f"{season.value.capitalize()} weather is here!" return f"In {season.name}, "+description print(describe_season(Season.SPRING)) ``` 这里演示了怎样借助于新加入的关键字 `match-case`(类似于其他语言里的 `switch`) 结合枚举变量一起工作以生成季节描述字符串。 --- ### 总结 无论是在哪种主流编程语言环境下,合理运用好枚举类型都能让我们的源代码变得更加直观易懂同时也降低了潜在风险因素的存在几率。以上分别介绍了几种同风格的语言对于该特性的具体实践方法论及其优势所在之处.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值