c语言之枚举类型(enum)

来源:互联网 发布:淘宝30字好评 编辑:程序博客网 时间:2024/05/22 10:58
               I.  enum枚举类型

1 . 如果一个变量只有几种可能的值,则可以定义为“枚举类型”;所谓“枚举”就是把可能的值一一的列举出来,变量的值只限于列举出来的值的范围。如:

    enum Spectrum{red,balck,yellow,blue,white};    其中:enum为关键字, Spectrum为该枚举类型的标记名(标记名:遵循标识符的命名规则);    花括号“{}”中的red,black,yellow,blue,white称为“枚举元素”或“枚举常量”;

2.可以用“枚举类型”声明符号名称来表示int型常量。只要是能使用int型的地方就能够使用枚举类型。注意:C语言中的枚举的一些特性不适合C++;比如c中的枚举变量允许使用++运算符,但是c++中则不允许。

3.有关枚举类型常量的默认值
这里仍然拿上面的枚举类型常量作为示例:

    enum Spectrum{red,balck,yellow,blue,white};                   0    1     2     3     4 默认情况下:该枚举列表中的常量值分别为:0,1,2,3,4

当然也可以在枚举声明中,可以为枚举常量指定整数值:如

   enum Spectrum{red=10,balck=20,yellow=30,                 blue=40,white=50};

也可以只对枚举类型中的一个枚举元素赋值;这时该枚举元素后面的枚举元素会被赋予后续的值。如:

    enum Spectrum{red,balck=22,yellow,blue,white};  则:red=0,black=22,yellow=23,blue=24,white=25;

枚举类型的作用:提高程序的可读性和可维护性;

代码示例1:输出12个月的英文单词

#include<stdio.h>#include <stdlib.h>enum Months{jan=1,feb,mar,apr,may,jun,jul,aug,sep,oct,nov,dec};int main(void)  {  enum Months m;    //flag用来标记输出的个数,若为4个,则输出一个换行符  int flag=0;      //指针数组,存放的是个字符串的入口地址  char *months[]={"January","February","March","April","May","June",        "July","August","September","October","November","December"};  for (m=jan;m<=dec;m++)  {    printf ("%-d月份:%-10s ",m,months[m-1]);    flag++;    if (flag%4==0)    {      putchar('\n');    }  }  system ("pause");  return 0;  }
1 1