枚举类型详解

简介: 枚举类型详解

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


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


比如,我们现实生活中:


  一周的是:星期一到星期日,是有限的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;
}


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


0a2653c851af460fa595bd959398a8f1.png


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


#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进行了赋值,但是代码运转后的结果为:


2d65d23f6d4748949b924e4057485923.png


枚举的可能取值:大小 依次往下增加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;
}


代码的运行结果为:


6de278e6d6694ce5bb08e7e842b7e74b.png


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


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


#include <stdio.h>
enum color  //颜色
{
  red = 5,
  green = 9,
  blue = 11,
};
int main()
{
  printf("enmu color所占字节的大小为:%d\n", sizeof(enum color));
  return 0;
}

代码的运行结果为:


12c3b7f3f8814309a195c64f051d4445.png


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


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


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


枚举类型的优点:


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


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


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


4.便于调试!


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


相关文章
|
9月前
|
C#
C#数据类型之枚举类型
C#数据类型之枚举类型
247 0
|
9月前
|
安全 C++
C++程序中的枚举类型
C++程序中的枚举类型
80 1
|
9月前
|
Java C语言 C++
使用枚举类型
使用枚举类型
56 0
|
9月前
|
存储 编译器 C++
23枚举类型
23枚举类型
42 0
|
9月前
|
编译器 Linux C++
C++ “美中不足” --->强枚举类型
C++ “美中不足” --->强枚举类型
|
9月前
|
索引
06 # 枚举类型
06 # 枚举类型
107 0
自定义类型枚举(上)
自定义类型枚举
45 0
|
C语言 C++
自定义类型枚举(下)
自定义类型枚举
47 0