枚举小记

枚举在C/C++中,是一个被命名的 整型常数的集合, 枚举在日常生活中很常见。
  例如表示星期的SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY,
  SATURDAY, 就是一个枚举。
  枚举的说明与结构和联合相似, 其形式为:
  enum 枚举名{
   标识符[=整型常数],
  标识符[=整型常数],
  ...
  标识符[=整型常数]
  } 枚举 变量;
  如果枚举没有初始化, 即省掉"=整型常数"时, 则从第一个标识符开始, 顺
  次赋给标识符0, 1, 2, ...。但当枚举中的某个成员赋值后, 其后的成员按依次
  加1的规则确定其值。
  例如下列枚举说明后, x1, x2, x3, x4的值分别为0, 1, 2, 3。
  enum Num{x1, x2, x3, x4}x;
  当定义改变成:
  enum Num
  {
      x1,
      x2=0,
      x3=50,
 

      x4

    }x;

  则x1=0, x2=0, x3=50, x4=51
  注意:
  1. 枚举中每个成员(标识符)结束符是",", 不是";", 最后一个成员可省略
  ","。
  2. 初始化时可以赋负数, 以后的标识符仍依次加1。
  3. 枚举变量只能取枚举说明结构中的某个标识符 常量
  例如:
  enum Num
  {
      x1=5,
      x2,
      x3,
 
      x4
  };
  enum Num x=x3;
  此时, 枚举变量x实际上是7。
   枚举类型变量的赋值和使用 
  枚举类型在使用中有以下规定:
  1. 枚举值是常量,不是变量。不能在程序中用 赋值语句再对它赋值。例如对枚举weekday的 元素再作以下赋值: sun=5;mon=2;sun=mon; 都是错误的。
  2. 枚举元素本身由 系统定义了一个表示序号的数值,从0 开始顺序定义为0,1,2…。如在weekday中,sun值为0,mon值为1, …,sat值为6。
  main(){
  enum weekday
  { sun,mon,tue,wed,thu,fri,sat } a,b,c;
 
      a=sun;
      b=mon;
      c=tue;
      printf("%d,%d,%d",a,b,c);
  }
  3. 只能把枚举值赋予枚举变量,不能把元素的数值直接赋予枚举变量。如: a=sun;b=mon; 是正确的。而: a=0;b=1; 是错误的。如一定要把数值赋予枚举变量,则必须用 强制类型转换,如: a=(enum weekday)2;其意义是将顺序号为2的枚举元素赋予枚举变量a,相当于: a=tue; 还应该说明的是枚举元素不是 字符常量也不是 字符串常量, 使用时不要加单、双引号。
  main(){
  enum body
  { a,b,c,d } month[31],j;
      int i;
      j=a;
 
      for(i=1;i<=30;i++){
      month[i] =j;
      j++;
      if (j>d) j=a;
      }
   
      for(i=1;i<=30;i++){
      switch(month[i] )
      {
      case a:printf(" %2d %c\t",i,'a'); break;
      case b:printf(" %2d %c\t",i,'b'); break;
      case c:printf(" %2d %c\t",i,'c'); break;
      case d:printf(" %2d %c\t",i,'d'); break;
      default:break;
      }
      }
      printf("\n");
  }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值