• 枚举


    1、枚举是用来干嘛的?
    (1)枚举在C语言中其实是一些符号常量集。直白点说:枚举定义了一些符号,这些符号的本质就是int类型的常量,
    每个符号和一个常量绑定。这个符号就表示一个自定义的一个识别码,编译器对枚举的认知就是符号常量所绑定的那个
    int类型的数字。
    (2)枚举符号常量和其对应的常量数字相对来说,数字不重要,符号才重要。符号对应的数字只要彼此不相同即可,
    没有别的要求。所以一般情况下我们都不明确指定这个符号对应的数字,而让编译器自动分配。(编译器自动分配的原则
    是:从0开始依次增加。如果用户自己定义了一个值,则从那个值开始往后依次增加)
    2、C语言为何需要枚举
    (1)C语言没有枚举是可以的。使用枚举其实就是对1、0这些数字进行符号化编码,这样的好处就是编程时可以不用看数字
    而直接看符号。符号的意义是显然的,一眼可以看出。而数字所代表的含义除非看文档或者注释。
    (2)宏定义的目的和意义是:不用数字而用符号。从这里可以看出:宏定义和枚举有内在联系。宏定义和枚举经常用来解决
    类似的问题,他们俩基本相当可以互换,但是有一些细微差别。
    3、宏定义和枚举的区别
    (1)枚举是将多个有关联的符号封装在一个枚举中,而宏定义是完全散的。也就是说枚举其实是多选一。
    (2)什么情况下用枚举:当我们要定义的常量是一个有限集合时(譬如一星期有7天,一个月有30天,一年12个月……),
    最适合用枚举。其实用宏定义也行,但是枚举更好。
    (3)不能用枚举的情况下(定义的常量符号之间无关联,或者无限的)用宏定义。
    总结:宏定义先出现,用来解决符号常量的问题:后来人们发现有时候定义的符号常量彼此之间有关联(多选一的关系),
    用宏定义来做虽然可以但是不贴切,所以发明了枚举来解决这种情况。

     1 #include <stdio.h>
     2 
     3 enum return_value  //这个枚举用来表示返回值,ERROR表示错误,RIGHT表示正确
     4 {
     5     ERROR,         //枚举常量是全局的,直接可以用
     6     RIGHT,
     7 };
     8 
     9 enum return_value func1(void);
    10 
    11 int main(void)
    12 {
    13     enum return_value r = func1();
    14     if(r == RIGHT)    //不是r.RIGHT也不是return_value.RIGHT
    15     {
    16         printf("函数执行正确.
    ");
    17     }
    18     else
    19     {
    20         printf("函数执行错误.
    ");
    21     }
    22 
    23     return 0;
    24 } 
    25 
    26 enum return_value func1(void)
    27 {
    28     enum return_value r1;
    29     r1 = ERROR;
    30     return r1;
    31 }
  • 相关阅读:
    socket
    netstat
    列表
    突然发现不会写代码了
    算法资源
    bit位操作
    排序算法
    连续子数组最大和
    books
    凸优化
  • 原文地址:https://www.cnblogs.com/jiangtongxue/p/11721963.html
Copyright © 2020-2023  润新知