【C语言】枚举完全指南:定义、优势与使用

365365bet官网 2025-09-19 11:31:53 admin 4198 454
【C语言】枚举完全指南:定义、优势与使用

C语言学习

枚举 友情链接:C语言专栏

文章目录

C语言学习前言:一、枚举类型的定义二、枚举类型的优点三、枚举类型的使用总结附录上文链接下文链接专栏

前言:

今天咱们再来学习另外一个自定义类型——枚举。

枚举顾名思义就是一 一列举。 把可能的取值一 一列举。 比如我们现实生活中:

一周的星期一到星期日是有限的7天,可以一一列举。 性别有:男、女,也可以一一列举。 月份有12个月,也可以一一列举

这里就涉及到枚举了。那咱们就先来看一下枚举的定义吧。

一、枚举类型的定义

示例:

enum Day//星期

{

Mon,

Tues,

Wed,

Thur,

Fri,

Sat,

Sun

};

enum Sex//性别

{

MALE,

FEMALE,

SECRET

};

enum Color//颜色

{

RED,

GREEN,

BLUE

};

以上定义的 enum Day , enum Sex , enum Color 都是枚举类型。 {}中的内容是枚举类型的可能取值,也叫 枚举常量,为什么称为常量,看代码:

enum Color//颜色

{

RED,

GREEN,

BLUE

};

int main()

{

RED = 1;//错误:试图修改枚举常量

return 0;

}

调试: 这些可能取值都是有值的,默认从0开始,一次递增1。 例如:

enum Color//颜色

{

RED,

GREEN,

BLUE

};

int main()

{

printf("%d %d %d", RED, GREEN, BLUE);

return 0;

}

调试: 我们也可以在定义的时候也可以赋初值: 示例1:

enum Color//颜色

{

RED = 4,//改变初始值为4

GREEN,

BLUE

};

int main()

{

printf("%d %d %d", RED, GREEN, BLUE);

return 0;

}

调试: 示例2:

enum Color//颜色

{

RED ,

GREEN = 4,//改变初始值为4

BLUE

};

int main()

{

printf("%d %d %d", RED, GREEN, BLUE);

return 0;

}

解析一下:

enum Color//颜色

{

RED ,

GREEN = 4,//改变初始值为4

//这样赋初始值的话只会从此时开始改变

//在此之前都会按照默认值开始的

//看输出就懂了

BLUE

};

调试:

总结: 枚举类型中定义的成员(如 RED、GREEN)是枚举常量,它们本质上是整型常量,表示该枚举类型变量可以取的所有可能值。

二、枚举类型的优点

那我们为什么要使用枚举呢?不是有#define 定义常量吗? 枚举的优点:

增加代码的可读性和可维护性和#define定义的标识符比较枚举有类型检查,更加严谨便于调试,预处理阶段会删除 #define 定义的符号使用方便,⼀次可以定义多个常量枚举常量是遵循作用域规则的,枚举声明在函数内,只能在函数内使用

我在这里举个例子,如果咱们要实现一个计算器,咱们要写代码:

void menu()

{

printf("*************************\n");

printf("**** 0.exit ****\n");

printf("**** 1.add 2.sub ****\n");

printf("**** 3.mul 4.div ****\n");

printf("*************************\n");

}

int main()

{

int input;

mune();

scanf("%d", &input);

switch (input)

{

case 1:

//……

break;

case 2:

//……

break;

case 3:

//……

break;

//……

}

return 0;

}

那如果咱们这样写呢:

void menu()

{

printf("*************************\n");

printf("**** 0.exit ****\n");

printf("**** 1.add 2.sub ****\n");

printf("**** 3.mul 4.div ****\n");

printf("*************************\n");

}

enum Cal

{

exit,

add,

sub,

mul,

div

};

int main()

{

int input;

mune();

scanf("%d", &input);

switch (input)

{

case add://使用枚举常量,一看就知道它要干什么

//……

break;

case sub://使用枚举常量

//……

break;

case mul://使用枚举常量

//……

break;

//……

}

return 0;

}

可能咱们现在不理解枚举的用处,不过没关系,当咱们写的代码多了,见的代码多了,就知道了,不着急的!!!

三、枚举类型的使用

enum Color//颜色

{

RED = 1,

GREEN = 2,

BLUE = 4

};

enum Color clr = GREEN;//使用枚举常量给枚举变量赋值

那是否可以拿整数给枚举变量赋值呢? 答案是:

在C语言中是可以的,但是在C++是不行的,C++的类型检查比较严格。

总结

枚举是 C 语言中提升代码可读性和维护性的利器,尤其适合管理一组相关的命名常量。尽管它在灵活性上不如宏定义,但其类型安全和调试友好性使其成为现代 C 代码的优选方案。

附录

上文链接

《位段全解析:内存布局、跨平台问题与应用场景》

下文链接

联合体完全指南:内存共享、大小计算与实战应用

专栏

C语言专栏

相关推荐

365365bet官网 众智科技(301361)2022年年报解读 郑州众智科技股份有限公司于2022年上市,实际控制人为“崔文峰”。公司的主营业务是内燃发电机组及发动机自动控制系统、低压...

众智科技(301361)2022年年报解读 郑州众智科技股份有限公司于2022年上市,实际控制人为“崔文峰”。公司的主营业务是内燃发电机组及发动机自动控制系统、低压...

📅 08-09 👁️ 1288
365BET 钟字笔画写法

钟字笔画写法

📅 08-17 👁️ 3877
365365bet官网 换算monnme[匁]至克

换算monnme[匁]至克

📅 06-30 👁️ 6156