枚举的赋值、定义、优点、使用

三. 枚举
枚举:就是一一列举,把可能的取值一一列举。
比如生活中:
1.一周的星期一到星期日是有限的7天,可以一一列举。
2.性别有:男、女、保密,也可以一一列举。
2.月份有12个月,也可以一一列举
这就可以使用枚举了。
————1.枚举类型的定义
//enum Day//星期
//{
//    Mon,
//    Tues,
//    Wed,
//    Thur,
//    Fri,
//    Sat,
//    Sun
//};
//enum Sex//性别
//{
//    MALE,
//    FEMALE,
//    SECRET
//};
//enum Color//颜色
//{
//    RED,
//    GREEN,
//    BLUE,
//};
以上定义的 enum Day , enum Sex , enum Color 都是枚举类型。
{}中的内容是枚举类型的可能取值,也叫 枚举常量 。


————2.枚举变量赋值只可以用枚举常量
//enum Day
//{
//    Mon,
//    Tues,
//    Wed,
//    Thur,
//    Fri,
//    Sat,
//    Sun
//};
//int main()
//{
//    enum Day d = Fri;
//    return 0;
//}


这些可能取值都是有值的,默认从0开始,一次递增1,在定义 枚举常量的时候
也可以赋初值,比如下面的枚举类型,red被赋值1,后面的就会依次递增1。
例如:
//enum Color//颜色
//{
//    red= 1,
//    green,
//    blue,
//};
//int main()
//{
//    printf("%d\n",red);
//    printf("%d\n", green);
//    printf("%d\n", blue);
//    return 0;
//}//打印结果为1 2 3

————————3.枚举的优点
为什么使用枚举?
我们可以使用 #define 定义常量,为什么非要使用枚举?
答:#define 定义常量时,每定义一个常量就要写一次#define,可读性不高,维护性太低
枚举的优点:
1. 增加代码的可读性(能让人快速理解、轻松维护、容易扩展)和可维护性(解决问题效率的快慢)
2. 和#define定义的标识符比较枚举有类型检查(比如; enum Color clr = green,green有对应的值,假设为1,但是 ),更加严谨。
3. 防止了命名污染(封装)
4. 便于调试
5. 使用方便,一次可以定义多个常量
//test.c文件————(预处理)———》编译————》链接————》生成.exe的文件
在预处理阶段,代码会发生如下变化:
//#define M 100;
//void main()
//{
//    int n = M;
//}
就会变成
//void main()
//{
//    int n = 100;//M被100替换,#define代码显示
//}
然后对代码进行调试,对可执行程(.exe)序进行调试,调试在预处理之后。
调试的代码其实是
//void main()
//{
//    int n = 100;
//}
这样的代码翻译成二进制指令的时候调试,即不能很好的观测到与M相关的值的。
而枚举类型并不是替换值,如果在代码中我们用到了枚举类型,在调试的时候依然可以观察到这些相关的值的,所以枚举相对于#define更便于调试
而对于宏(#define)来说其在预处理阶段就替换了。代码就消失了,只是把值赋了过来。导致调试时的代码与所见代码并不相同。
#define的变量没有类型,而枚举类型有类型

//4.————枚举的使用
//enum Color//颜色
//{
//    RED = 1,
//    GREEN = 2,
//    BLUE = 4
//};
//enum Color clr = GREEN;//只能拿枚举常量给枚举变量赋值,才不会出现类型的差异。
//clr = 5;

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值