C语言学习笔记之枚举(enum)

枚举:

一、枚举

  枚举的语法定义格式为:
  enum 枚举名 {枚举元素1,枚举元素2,....} 

  举例

1 # define MON 1
2 # define TUE 2
3 # define WED 3
4 # define THU 4
5 # define FRI 5
6 # define SAT 6
7 # define SUN 7
1 enum DAY
2 {
3     MON=1,TUE,WED,THU,FRI,SAT,SUN
4 };

  第一个枚举成员的默认值为整形的0,后续枚举成员的值在前一个成员加上1。我们在这个实例中把第一个枚举成员的值定义为1,第二个就为2,以此类推。

1 enum season {spring,sunmmer=3,autumn,winter};

  没有指定值的枚举元素,其值为前一元素加1.所以spring的值为0,summer的值为3,autumn的值为4,winter的值为5

  刚才只是声明了枚举类型,并不是定义了枚举变量
二、枚举变量的定义
  2.1先定义枚举类型,再定义枚举变量

1 enum DAY
2 {
3     MON=1,THE,WED,THU,FRI,SAT,SUN
4 };
5 enum DAY day;

  2.2定义枚举类型的同时定义枚举变量

1 enum DAY
2 {
3     MON=1,TUE,WED,THU,FRI,SAT,SUN
4 }day;

  2.3省略枚举名称,直接定义枚举变量

1 enum
2 {
3     MON=1,TUE,WED,THU,FRI,SAT,SUN
4 }day;

  举例:

 1 # include <stdio.h>
 2 
 3 enum DAY
 4 {
 5     MON=1,TUE,WED,THU,FRI,SAT,SUN
 6 };
 7 
 8 int main()
 9 {
10     enum DAY day;
11     day=WED;
12     printf("%d",day);
13     return 0;
14 }

  在C语言中,枚举类型是被当做int或者unsigned int来处理的,所以按照C语言的规范是没有办法遍历枚举类型的。
  不过在一些特殊的情况下,枚举类型必须连续是可以实现有条件的遍历。

下面实例用for来遍历枚举的元素。

 1 #include<stdio.h>
 2  
 3 enum DAY
 4 {
 5       MON=1, TUE, WED, THU, FRI, SAT, SUN
 6 } day;
 7 int main()
 8 {
 9     // 遍历枚举元素
10     for (day = MON; day <= SUN; day++) {
11         printf("枚举元素:%d \n", day);
12     }
13 }

  以下枚举类型不连续,这种枚举无法遍历

1 enum
2 {
3     ENUM_0,
4     ENUM_10 = 10,
5     ENUM_11
6 };

  将整数转换为枚举:

 1 #include <stdio.h>
 2 #include <stdlib.h>
 3  
 4 int main()
 5 {
 6  
 7     enum day
 8     {
 9         saturday,
10         sunday,
11         monday,
12         tuesday,
13         wednesday,
14         thursday,
15         friday
16     } workday;
17  
18     int a = 1;
19     enum day weekend;
20     weekend = ( enum day ) a;  //类型转换
21     //weekend = a; //错误
22     printf("weekend:%d",weekend);
23     return 0;
24 }

整理自菜鸟教程 https://www.runoob.com

转载于:https://www.cnblogs.com/mustangqin/p/10968696.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值