枚举类型详解

2023-05-16

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

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

比如,我们现实生活中:

   一周的是:星期一到星期日,是有限的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.使用方便,一次可以定义多个常量!!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

枚举类型详解 的相关文章

随机推荐

  • JS 定时对象时,key加中括号表示什么意思

    对象key 加中括号是 取中括号中变量的内容 当做对象的key使用 xff0c 不加中括号 xff0c 则直接用该字符串当作对象的key 例如如下代码 xff1a var name 61 39 keyn 39 var a 61 name 3
  • 结构体案例2

    设计一个英雄的结构体 xff0c 包括成员姓名 xff0c 年龄 xff0c 性别 xff1b 创建结构体数组 xff0c 数组中存放5名英雄 通过冒泡排序 xff0c 将数组中的英雄按年龄进行升序排列 xff0c 最终打印排序后的结果 i
  • 第二周博客总结

    既然自己选择了学习算法 xff0c 便会一直坚持下去 xff0c 完成自己既定的目标 xff01 这一周下来 xff0c 按照自己既定的计划 xff0c 自己利用课余时间看深入浅出这本书 从第八章的初涉算法一直看到了第十七章的集合 xff0
  • 第四周ACM博客总结

    这一周基本对算法知识进行了一次细致的阅读 xff0c 自己也对算法知识有了更深一步的了解 这一周自己先将上周剩下的一点STL的内容补上了 xff0c 这些容器之间相似的地方有很多 xff0c 但都有各自的优点所在 xff0c 需要结合题目特
  • 第十四周DP算法总结

    这周自己主要再看DP算法的博客 xff0c 感觉DP这一部分内容确实比之前的都要麻烦一些 xff0c 最后攻克这一部分难题还是挺好的 这周自己总结了一些题型 xff0c 以及一些方法思路 xff0c 最后再把动态规划和之前的分治和贪心做一下
  • 深度理解卷积神经网络

    神经网络包括卷积层 xff0c 池化层 xff0c 全连接层 一个最简单的神经元结构 xff0c 假如有三个输入 xff0c 都对应一个权重参数 xff0c 然后通过权重加起来 xff0c 经过一个激活函数 xff0c 最后输出y CNN中
  • 花了半个多小时才发现的错误。。

    找了半天原来该写mapper的地方写成了service 结果光栈溢出 在找错误的过程中发现有些sql语句也写得不对 xff0c 单词拼错的 xff0c 后边多加逗号的 xff0c 某些html语句后边多写逗号的 64 Service pub
  • 找了1个多小时才发现的错误。。

    如果只是跟着课本敲 xff0c 那就肯定报错了 好久没碰有点生疏了 之前敲过一个类似的加载properties的文件的方法 xff0c 直接把课本的这个改成这个就可以解决500的错误了 注释的地方是行不通的错误代码 xff01 xff01
  • 1. Python 的 print( )输出函数

    1 Python 的 print 输出函数 文章目录 1 Python 的 print 输出函数1 什么是print 函数2 print 函数的语法3 英文输入法4 敲下你的第一行代码5 print 函数的4种用法5 1 没有引号5 2 单
  • c语言顺序表的基本操作

    该代码段包含了几种比较常见的顺序表的基本操作 xff0c 有 xff1a 求表长 xff0c 按位取值 xff0c 按值取位 xff0c 插入和删除几种方式 xff1b include lt stdio h gt define listsi
  • c语言单链表的基本操作

    该程序包含了链表的头插法 尾插法 求表长 按位查找 按值查找 插入 删除 销毁等几种操作 xff1b include lt stdio h gt include lt stdlib h gt malloc和free都需要这个系统库函数头文件
  • 文件操作(结构体)

    将结构体内容写入到文件中 include lt stdio h gt include lt string h gt struct student char name 100 int age int main struct student s
  • c语言顺序栈的基本操作

    该程序包含了顺序栈的置空 判断是否为空 判断是否为满 入栈 出栈和取栈顶元素等几种操作 xff1b include lt stdio h gt define size 100 typedef int datatype 假定栈元素的类型为in
  • c语言循环队列的基本操作

    该程序包含了置空 xff0c 判断是否为空 xff0c 入队 xff0c 出队 xff0c 取对头元素等几个基本操作 xff1b include lt stdio h gt include lt stdlib h gt malooc需要的头
  • c语言链队的基本操作

    该程序包含了链队的置空 判断是否为空 入栈 出栈和取栈顶元素几种基本操作 include lt stdio h gt include lt stdlib h gt malloc和free都需要这个系统库函数头文件 xff1b typedef
  • 十进制纯小数M转化成B进制数小数

    通过使用循环队列的方式将十进制纯小数M转化成B进制数 xff1b include lt stdio h gt include lt stdlib h gt malloc需要的头文件 xff1b define size 100 typedef
  • 十进制整数N转化成B进制整数

    通过使用顺序栈的方式将十进制整数N转化成B进制整数 xff1b include lt stdio h gt include lt stdlib h gt define size 100 typedef struct int data siz
  • redhat8安装ansible,Redhat8版本太低

    ansible因为更新的原因要安装Python3 9 Redhat8自带Python版本太低 耗费了一个多星期才解决 关闭防火墙和selinux 1 systemctl status firewalld 2 systemctl stop f
  • 从键盘输入10个整数,编程实现将其中最大数与最小数的位置对换后,再输出调整后的数组

    include lt stdio h gt void main int t 10 temp i max min max 61 0 min 61 0 for i 61 0 i lt 10 i 43 43 scanf 34 d 34 amp t
  • 枚举类型详解

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