【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++的类型检查比较严格。

例如:

相关推荐
charlie1145141911 小时前
从 0 开始的机器学习——NumPy 线性代数部分
开发语言·人工智能·学习·线性代数·算法·机器学习·numpy
catchadmin2 小时前
Laravel12 + Vue3 的免费可商用商业级管理后台 CatchAdmin V5 正式发布
开发语言·php
袁气满满~_~2 小时前
Python数据分析学习
开发语言·笔记·python·学习
寻星探路2 小时前
【算法专题】滑动窗口:从“无重复字符”到“字母异位词”的深度剖析
java·开发语言·c++·人工智能·python·算法·ai
程序员小白条2 小时前
面试 Java 基础八股文十问十答第八期
java·开发语言·数据库·spring·面试·职场和发展·毕设
Dxy12393102162 小时前
python连接minio报错:‘SSL routines‘, ‘ssl3_get_record‘, ‘wrong version number‘
开发语言·python·ssl
大王小生2 小时前
C# CancellationToken
开发语言·c#·token·cancellation
listhi5202 小时前
基于C#实现屏幕放大镜功能
开发语言·c#
我叫袁小陌3 小时前
C++多线程全面详解
开发语言·c++
lihongli0003 小时前
【工程实战】Win11 + Ubuntu20.04 + Ubuntu24.04 三系统长期稳定安装方案(含避坑指南)
开发语言