C语言自定义类型——枚举

枚举

前面我们分别介绍了两种自定义类型,分别是结构体和位段,今天我们来介绍另一种自定义类型枚举。

当然这一节的内容比较简单。

目录

枚举

一、定义

二、C语言中枚举的本质是什么?

三、枚举的优点


一、定义

枚举在C/C++/c#中,是一个被命名的整型常数的集合, 枚举在日常生活中很常见。

例如表示星期的SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY,

SATURDAY,就是一个枚举。

简单的讲,枚举就是把一个事物的可能一一列举,

例如:月份有一到十二个月可一一列举;星期也可以列举等等。

我们看一下C语言中枚举长什么样子,我们以性别为例,请看下面代码片段:

enum sex{
	MALE,//男性
	FEMALE,//女性
	SECRET//保密
};

二、C语言中枚举的本质是什么?

C语言中枚举其实等价于整型变量,

我们可以这样测试:

int main(){
	printf("MALE = %d\n", MALE);
	printf("FEMALE = %d\n", FEMALE);
	printf("SECRET = %d\n", SECRET);
	return 0;
}

结果为:

可见C语言中枚举类型确实是以 int 型存储的,而且有这样的规则:我们仅仅给出了名字,却没有给出名字对应的值,因为枚举值默认从 0 开始,往后逐个加 1(递增)

正是因为枚举实际上是 int 型的数据,所以我们可以在定义一个枚举时给它赋予不同的值。如下:

#include <stdio.h>

enum sex{
	MALE,//男性
	FEMALE = 20 ,//女性
	SECRET//保密
};

int main(){
	printf("MALE = %d\n", MALE);
	printf("FEMALE = %d\n", FEMALE);
	printf("SECRET = %d\n", SECRET);
	return 0;
}

此时输出的结果为:

下面我们继续测试,如果我们尝试修改MALE的值会发生什么情况?

可见,枚举的值可理解为一个 int 型的常量。

三、枚举的优点

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

1、增加代码的可读性和可维护性 ;

2、和#define定义的标识符比较枚举有类型检查,更加严谨;

3、防止了命名污染(封装);

4、 便于调试 ;

5、使用方便,一次可以定义多个常量。

我们看下面一段代码就会一目了然

#include <stdio.h>

int main(){
 
    enum color { red=1, green, blue };
 
    enum  color favorite_color;
 
    /* 用户输入数字来选择颜色 */
    printf("请输入你喜欢的颜色: (1. red, 2. green, 3. blue): ");
    scanf("%u", &favorite_color);
 
    /* 输出结果 */
    switch (favorite_color){
    case red:
        printf("你喜欢的颜色是红色");
        break;
    case green:
        printf("你喜欢的颜色是绿色");
        break;
    case blue:
        printf("你喜欢的颜色是蓝色");
        break;
    default:
        printf("你没有选择你喜欢的颜色");
    }
    return 0;
}

这段代码的可读性就很高。

今天的分享就到这里了,希望大家一起提高。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值