zoukankan      html  css  js  c++  java
  • 枚举

    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 }
  • 相关阅读:
    jQuery EasyUI API 中文文档 数字框(NumberBox)
    jQuery EasyUI API 中文文档 数值微调器(NumberSpinner)
    jQuery EasyUI API 中文文档 日期时间框(DateTimeBox)
    jQuery EasyUI API 中文文档 微调器(Spinner)
    jQuery EasyUI API 中文文档 树表格(TreeGrid)
    jQuery EasyUI API 中文文档 树(Tree)
    jQuery EasyUI API 中文文档 属性表格(PropertyGrid)
    EntityFramework 数据操作
    jQuery EasyUI API 中文文档 对话框(Dialog)
    jQuery EasyUI API 中文文档 组合表格(ComboGrid)
  • 原文地址:https://www.cnblogs.com/jiangtongxue/p/11721963.html
Copyright © 2011-2022 走看看