【C语言】自定义类型------枚举类型

1、枚举类型

枚举类型的关键字是:enum

枚举顾名思义就是一 一列举。

把可能的取值一 一列举。

比如,比如我们现实生活中,一周的星期一到星期日是有限的的7天,可以一 一列举。三原色(红、蓝、绿)也是可以一一列举。

性别:男、女、保密,也可以一一列举。

例如:

enum Color//颜色

{

RED,

GREEN,

BLUE

};
enum Sex//性别

{

MALE,

FEMALE,

SECRET

};

以上定义的:enum Color, enum Sex都是枚举类型。{}中的内容是枚举类型的可能取值,也叫枚举常量。

这些可能取值都是有值的,默认从0开始,一次递增1,当然在声明枚举类型的时候也可以赋初值。

例如:

enum Color//颜色

{

RED=2,

GREEN=4,

BLUE=6

};

代码示例:

源代码:

#define _CRT_SECURE_NO_WARNINGS

#include<stdio.h>

enum Color

{

RED,

GREEN,

BLUE

};

int main()

{

printf("%d\n", RED);

printf("%d\n", GREEN);

printf("%d\n", BLUE);

return 0;

}

注意:

2、枚举类型的优点

为什么使用枚举?

我们可以使用#define定义常量,为什么非要使用枚举?

枚举的优点:

(1)增加代码的可读性和可维护性

(2)和#define定义的标识符相比,枚举有类型检查,更加严谨

(3)便于调试,预处理阶段会删除#define定义的符号

(4)使用方便,一次可以定义多个常量

(5)枚举常量是遵循作用域规则的。枚举声明在函数内,只能在函数内使用。

增加代码的可读性:

例如:

代码:

#define _CRT_SECURE_NO_WARNINGS

#include<stdio.h>

enum option

{

EXIT,//退出程序

ADD,//加法

SUB,//减法

MUL,//乘法

DIV//除法

};

int main()

{

int x = 0;

int y = 0;

scanf("%d %d", &x, &y);

printf("**** 0 退出程序 1 加法\n");

printf("**** 2 减法 3 乘法\n");

printf("**** 4 除法\n");

int n = 0;

printf("请输入选项:");

scanf("%d", &n);

switch (n)

{

case EXIT:

break;

case ADD:

printf("%d\n", x + y);

break;

case SUB:

printf("%d\n", x - y);

break;

case MUL:

printf("%d\n", x * y);

break;

case DIV:

if (y ==0 )

{

printf("y不能为0");

break;

}

printf("%d\n", x / y);

break;

default:

printf("输入错误");

}

return 0;

}

3、枚举类型的使用

在C语言中,也可以拿整数给枚举变量赋值。但是在C++中是不行的,C++的类型检查比较严格。

例如:

相关推荐
gospace1 分钟前
Golang Event Bus 最佳实践:使用 NSQite 实现松耦合架构
开发语言·架构·golang·事件·总线·event·event bus
风中飘爻7 分钟前
JavaScript:表单及正则表达式验证
开发语言·javascript·ecmascript
极客先躯26 分钟前
高级java每日一道面试题-2025年4月07日-微服务篇[Nacos篇]-如何监控Nacos的运行状态?
java·开发语言·微服务
牛了爷爷35 分钟前
php伪协议
android·开发语言·php
CSUC44 分钟前
【开发语言】悬空指针问题
开发语言
GOTXX1 小时前
【Qt】QWidget 核⼼属性详解
开发语言·前端·c++·qt·机器学习·ai·widget
Y1anoohh1 小时前
驱动学习专栏--字符设备驱动篇--2_字符设备注册与注销
linux·c语言·驱动开发·学习
꧁坚持很酷꧂1 小时前
Qt实现文件传输服务器端(图文详解+代码详细注释)
开发语言·数据库·qt
Wythzhfrey1 小时前
单片机Day05---静态数码管
c语言·单片机·嵌入式硬件·学习·c#·51单片机