枚举类型详解

对于枚举类型,想必不少的读者,也是听过,但是,却没怎么见过如何使用!!所以,笔者打算用这一篇博客,来详细的讲解一下,枚举!!

对于枚举,顾名思义,就是一一列举,把可能的值一一列举!!

比如,我们现实生活中:

   一周的是:星期一到星期日,是有限的7天,可以一一列举

   性别有:男,女,保密,也可以一一列举!

    月份有1到12个月,也可以一一列举出来!

因此,在上述的情况下,就用到了枚举了!!


枚举定义的简单使用:描述星期

enum day   //星期
{
	mon,  //注意,这儿是逗号(,)!!
	tues,
	wed,
	thur,
	fri,
	sat,
	sun,
};

这里,需要注意的是:

1.枚举(enum)!

2。枚举的各种可能之间用逗号(,)隔开,   末尾的分号(;)系统自动携带,请不要删除!!

3.列举出来的是枚举的可能取值!!

描述性别:

enum sex  //性别
{
	male,
	famale,
	serect,
};

 描述颜色 :

enum color  //颜色
{
	red,
	green,
	blue,
};

下面,笔者用代码,来描述一下:枚举的类型的使用:

#include <stdio.h>

enum color  //颜色
{
	red,
	green,
	blue,
};

int main()
{
	enum color c = blue;

	return 0;
}

在枚举里面,每个可能只能出现一次,不能多次出现,就比如,今天是星期四,在这个星期里面,只有一天是星期四的情况!!


枚举的可能取值:每一个的可能取值是常量,不可以修改!!

#include <stdio.h>

enum color  //颜色
{
	red,
	green,
	blue,
};

int main()
{
	printf("red=   %d\n", red);    //0
	printf("green= %d\n", green);  //1
	printf("blue=  %d\n", blue);   //2


	return 0;
}

代码的运行结果,就可以很好的证明:枚举的可能取值是个常量!!请看代码的运行结果:

但是对于上述的代码:(更改的区别在于枚举类型中)

#include <stdio.h>

enum color  //颜色
{
	red=5,
	green,
	blue,
};

int main()
{
	printf("red=   %d\n", red);
	printf("green= %d\n", green);
	printf("blue=  %d\n", blue);


	return 0;
}

该段代码,仅仅是将:red=5进行了赋值,但是代码运转后的结果为:

枚举的可能取值:大小 依次往下增加1

但是,当全部都赋值的情况下,运行的结果又出现了反转:

#include <stdio.h>

enum color  //颜色
{
	red=5,
	green=9,
	blue=11,
};

int main()
{
	printf("red=   %d\n", red);
	printf("green= %d\n", green);
	printf("blue=  %d\n", blue);


	return 0;
}

代码的运行结果为:

 对比上面三个结果,我们可以看出来:枚举的可能取值以整型的形式存在!!

下面,我们对该枚举类型进行求一下所占字节的大小

#include <stdio.h>

enum color  //颜色
{
	red = 5,
	green = 9,
	blue = 11,
};

int main()
{
	printf("enmu color所占字节的大小为:%d\n", sizeof(enum color));

	return 0;
}

代码的运行结果为:

 在上面的代码所求的结果中,我们也可以看出来:

枚举类型,只可能取一个值(以整型的形式存在)取决于编译器!!


经过上述的详解,笔者总结出一下:

枚举类型的优点:

1.增加代码的可读性与可维护性

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

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

4.便于调试!

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

  • 10
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

念君思宁

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值