枚举定义

用枚举类型定义的枚举变量只能取集合中的某一元素值。由于枚举类型是导出数据类型,因此,必须先定义枚举类型,然后再用枚举类型定义枚举型变量。

 

  enum <枚举类型名> 
  { <枚举元素表> };
  其中:关键词enum表示定义的是枚举类型,枚举类型名由标识符组成,而枚举元素表由枚举元素或枚举常量组成。例如: 
  enum weekdays 
  { Sun,Mon,Tue,Wed,Thu,Fri,Sat };
  定义了一个名为 weekdays的枚举类型,它包含七个元素:Sun、Mon、Tue、Wed、Thu、Fri、Sat。在编译器编译程序时,给枚举类型中的每一个元素指定一个整型常量值(也称为序号值)。若枚举类型定义中没有指定元素的整型常量值,则整型常量值从0开始依次递增,因此,weekdays枚举类型的七个元素Sun、Mon、Tue、Wed、Thu、Fri、Sat对应的整型常量值分别为0、1、2、3、4、5、6。
  注意:在定义枚举类型时,也可指定元素对应的整型常量值。例如,描述逻辑值集合{TRUE、FALSE}的枚举类型boolean可定义如下:
  enum boolean 
  { TRUE=1 ,FALSE=0 };
  该定义规定:TRUE的值为1,而FALSE的值为0。
  而描述颜色集合{red,blue,green,black,white,yellow}的枚举类型colors可定义如下:
  enum colors 
  {red=5,blue=1,green,black,white,yellow};
  该定义规定red为5 ,blue为1,其后元素值从2 开始递增加1。green、black、white、yellow的值依次为2、3、4、5。此时,整数5将用于表示二种颜色red与yellow。通常两个不同元素取相同的整数值是没有意义的。
  枚举类型的定义只是定义了一个新的数据类型,只有用枚举类型定义枚举变量才能使用这种数据类型。 

  8.1.2枚举类型变量的定义

  定义枚举类型变量有三种方法,即:先定义类型后定义变量,定义类型的同时定义变量,直接定义变量,现介绍如下:
  1.先定义类型后定义变量
  格式: <枚举类型名> <变量1>〔,<变量2>,…,<变量n>〕;
  例如:enum colors 
  {red=5,blue=1,green,black,white,yellow};
  colors c1,c2;
  c1、c2 为colors类型的枚举变量。

  2.定义类型的同时定义变量

  格式:enum <枚举类型名> 
  { <枚举元素表> } <变量1>〔,<变量2>,…,<变量n>〕;
  例如:enum colors 
  {red=5,blue=1,green,black,white,yellow}c1,c2;

  3.直接定义枚举变量

  格式:enum 
  { <枚举元素表> } <变量1>〔,<变量2>,…,<变量n>〕;
  例如:enum 
  {red=5,blue=1,green,black,white,yellow} c1=red,c2=blue;
  由上例可以看出,定义枚举变量时,可对变量进行初始化赋值,c1的初始值为red,c2的初始值为blue。
 

  8.1.3 枚举类型变量的引用

  对枚举类型变量只能使用2类运算:赋值运算与关系运算。
  1.赋值运算
  C++中规定,枚举类型的元素可直接赋给枚举变量,且同类型枚举变量之间可以相互赋值。如:enum weekdays //定义星期日到星期六为枚举类型weekdays
{ Sun,Mon,Tue,Wed,Thu,Fri,Sat };
 void main ( void )
 { weekdays day1,day2; //定义两个枚举型变量day1、day2
  day1=Sun; //将元素Sun赋给枚举变量day1
  day2=day1; //枚举变量day1赋给day2
  cout<<day1<<endl; //输出day1的值,即Sun的序号0
 }
  该例定义了两个类型为weekdays的枚举类型变量day1与day2,这两个枚举型变量只能取集合 { Sun,Mon,Tue,Wed,Thu,Fri,Sat }中的一个元素,可用赋值运算符将元素Sun赋给day1。枚举变量day1的值可赋给同类枚举变量day2。注意:
  (1)不能用键盘通过"cin>>"向枚举变量输入元素值,例如:cin>>day1是错误的。因此,枚举变量的值只能通过初始化或赋值运算符输入。
  (2)可用"cout<<"输出枚举变量,但输出的是元素对应的序号值,而不是元素值。例如:cout<<day1; 用cout输出day1中元素Sun对应的序号值0,而不是元素Sun。

  2.关系运算
  枚举变量可与元素常量进行关系比较运算,同类枚举变量之间也可以进行关系比较运算,但枚举变量之间的关系运算比较是对其序号值进行的。例如:
  day1=Sun; //day1中元素Sun的序号值为0
  day2=Mon; //day2中元素Mon的序号值为1
  if (day2>day1) day2=day1; //day2>day1的比较就是序号值关系式:1>0的比较
  if (day1>Sat) da1=Sat; //day1>Sat的比较就是序号值关系式:0>6的比较
  day2与day1的比较,实际上是其元素Mon与Sun序号值1与0的比较,由于1>0成立,所以day2>day1条件为真,day2=day1=Sun。同样由于day1中元素Sun的序号值0小于Sat的序号值6,所以day1>Sat条件为假,day1的值不变。


http://blog.csdn.net/lbsjs/article/details/178896

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值