枚举类型

来源:互联网 发布:手机桌面优化软件 编辑:程序博客网 时间:2024/06/18 13:26

枚举类型就是一一列举,在C语言中有一种枚举类型,其含义就是将具有相同属性的一类数据一一列举出来。

枚举类型的一般定义形式为:  

enum          枚举类型名 {

标识符 1     [ = 整形常数 ],

......

标识符 n     [ = 整形常数 ],

};

其中 [ ] 中的部分可有可无。枚举类型是有序类型,如果没有为枚举类型常量指定值,那么它的值比前一个值大1,枚举常量的值默认从0开始。枚举元素按照定义时的先后顺序分别编号为0,1,2,...,n-1.当然,也可以人为指定枚举类型常量的值。枚举类型名的命名同样要遵循标识符的命名规则,而其中的标识符 1,2,...,n是定义的枚举类型的全部取值。定义枚举类型的几种方法与结构体和共用体的定义方法类似,有一下三种:

enum          枚举类型名 {

标识符 1     [ = 整形常数 ],

......

标识符 n     [ = 整形常数 ],

}枚举变量1,枚举变量2......;

也可以省略枚举类型名,如:

enum           {

标识符 1     [ = 整形常数 ],

......

标识符 n     [ = 整形常数 ],

}枚举变量1,枚举变量2......;

还可以先定义枚举类型,后定义枚举变量的方法,如:

enum          枚举类型名 {

标识符 1     [ = 整形常数 ],

......

标识符 n     [ = 整形常数 ],

};

enum    枚举类型名      枚举变量1,枚举变量2,......;

看下面一个小例子:

#include<stdio.h>

enum    nu1 {

a,

b,

c,

d,

};

enum    nu2 {

e=3,

f=2,

g=1,

h,

};

void  main()

{

printf("枚举常量 a 的值为:%d    b 的值为:%d     c 的值为:%d     d 的值为:%d", a,b,c,d);

printf("枚举常量 e 的值为:%d    的值为:%d    的值为:%d     的值为:%d",e,f,g,h);

return ; 

}

运行结果:

枚举常量 a 的值为:0   b 的值为: 1   c 的值为: 2   d 的值为 :3

枚举常量 e 的值为:3   f 的值为: 2   g 的值为: 2   h 的值为 :2

从上面的程序可以看出,在定义的枚举类型nu1中,并没有指定枚举常量的值,而是采用默认的方法,打印出来的结果与前面分析的一致,从0开始,后面的枚举常量的值比前面的枚举常量的值大1;在枚举常量nu2中,那个没有指定的值 h,它比前面的枚举常量值大1.

需要注意一点,在使用枚举类型时,同一个作用域内不能出现重名的枚举常量名,如:

#include<stdio.h>

void main()

{

enum   nu1 {

    a,

};

enum      nu2 {

a,

};

return ;

}

运行的时候程序会报错,但是可以把枚举类型 nu2 用括号括起来就可以了

#include<stdio.h>

void main()

{

enum   nu1 {

    a,

};

{

enum      nu2 {

a,

};

}

return ;

}

对于结构体和共用体,没有这样的重名限制
0 0
原创粉丝点击