1. 在实际问题中,有些变量的取值被限定在一个有限的范围内。例如,一个星期内只有七天,一年只有十二个月,一个班每周有六门课程等等。如果把这些量说明为整型,字符型或其它类型显然是不妥当的。为此,C语言提供了一种称为“枚举”的类型。在“枚举”类型的定义中列举出所有可能的取值,被说明为该“枚举”类型的变量取值不能超过定义的范围。应该说明的是,枚举类型是一种基本数据类型,而不是一种构造类型,因为它不能再分解为任何基本类型。
  2. 11.10.1 枚举类型的定义和枚举变量的说明
  3. 1. 枚举的定义枚举类型定义的一般形式为:
  4. enum 枚举名{ 枚举值表 };
  5. 在枚举值表中应罗列出所有可用值。这些值也称为枚举元素。
  6. 例如:
  7.  
  8. 该枚举名为weekday,枚举值共有7个,即一周中的七天。凡被说明为weekday类型变量的取值只能是七天中的某一天。
  9. 2. 枚举变量的说明
  10. 如同结构和联合一样,枚举变量也可用不同的方式说明,即先定义后说明,同时定义说明或直接说明。
  11. 设有变量a,b,c被说明为上述的weekday,可采用下述任一种方式:
  12. enum weekday{ sun,mou,tue,wed,thu,fri,sat };
  13. enum weekday a,b,c;
  14. 或者为:
  15. enum weekday{ sun,mou,tue,wed,thu,fri,sat }a,b,c;
  16. 或者为:
  17. enum { sun,mou,tue,wed,thu,fri,sat }a,b,c;
  18. 11.10.2 枚举类型变量的赋值和使用
  19. 枚举类型在使用中有以下规定:
  20. 1. 枚举值是常量,不是变量。不能在程序中用赋值语句再对它赋值。
  21. 例如对枚举weekday的元素再作以下赋值:
  22. sun=5;
  23. mon=2;
  24. sun=mon;
  25. 都是错误的。
  26. 2. 枚举元素本身由系统定义了一个表示序号的数值,从0开始顺序定义为012…。如在weekday中,sun值为0mon值为1,…,sat值为6
  27. 【例11.10
  28. main(){
  29. enum weekday
  30. { sun,mon,tue,wed,thu,fri,sat } a,b,c;
  31. a=sun;
  32. b=mon;
  33. c=tue;
  34. printf("%d,%d,%d",a,b,c);
  35. }
  36.  
  37. 说明:
  38. 只能把枚举值赋予枚举变量,不能把元素的数值直接赋予枚举变量。如:
  39. a=sum;
  40. b=mon;
  41. 是正确的。而:
  42. a=0;
  43. b=1;
  44. 是错误的。如一定要把数值赋予枚举变量,则必须用强制类型转换。
  45. 如:
  46. a=(enum weekday)2;
  47. 其意义是将顺序号为2的枚举元素赋予枚举变量a,相当于:
  48. a=tue;
  49. 还应该说明的是枚举元素不是字符常量也不是字符串常量,使用时不要加单、双引号。
  50. 【例11.11
  51. main(){
  52. enum body
  53. { a,b,c,d } month[31],j;
  54. int i;
  55. j=a;
  56. for(i=1;i<=30;i++){
  57. month[i]=j;
  58. j++;
  59. if (j>d) j=a;
  60. }
  61. for(i=1;i<=30;i++){
  62. switch(month[i])
  63. {
  64. case a:printf(" - %c\t",i,'a'); break;
  65. case b:printf(" - %c\t",i,'b'); break;
  66. case c:printf(" - %c\t",i,'c'); break;
  67. case d:printf(" - %c\t",i,'d'); break;
  68. default:break;
  69. }
  70. }
  71. printf("\n");
  72. }

enmu枚举类型的更多相关文章

  1. 【转】java枚举类型enum的使用

    原文网址:http://blog.csdn.net/wgw335363240/article/details/6359614 java 枚举类型enum 的使用 最近跟同事讨论问题的时候,突然同事提到 ...

  2. 转载 java枚举类型enum的使用 (原文地址:http://blog.csdn.net/wgw335363240/article/details/6359614)

    java枚举类型enum的使用 最近跟同事讨论问题的时候,突然同事提到我们为什么java中定义的常量值不采用enmu枚举类型,而采用public final static 类型来定义呢?以前我们都是采 ...

  3. TypeScript中的枚举类型

    TypeScript拓展了Javascript原生的标准数据类型集,增加了枚举类型(enmu)和其他语言一 样 它提供我们一种数字类型的值,用来设置由于辨别的名字和方法 enum Students { ...

  4. 深度分析 Java 的枚举类型:枚举的线程安全性及序列化问题(转)

    写在前面: Java SE5 提供了一种新的类型 Java的枚举类型,关键字 enum 可以将一组具名的值的有限集合创建为一种新的类型,而这些具名的值可以作为常规的程序组件使用,这是一种非常有用的功能 ...

  5. C++ Primer 笔记——枚举类型

    1.和类一样,每个枚举类型定义了一种新的类型.枚举属于字面值常量类型. 2.C++包含两种枚举:限定作用域的和不限定作用域的.C++11新标准引入了限定作用域的枚举类型. }; // 限定作用域的枚举 ...

  6. Asp.Net 将枚举类型(enum)绑定到ListControl(DropDownList)控件

    在开发过程中一些状态的表示使用到枚举类型,那么如何将枚举类型直接绑定到ListControl(DropDownList)是本次的主题,废话不多说了,直接代码: 首先看工具类代码: /// <su ...

  7. golang枚举类型 - iota用法拾遗

    在c#.java等高级语言中,经常会用到枚举类型来表示状态等.在golang中并没有枚举类型,如何实现枚举呢?首先从枚举的概念入手. 1.枚举类型定义 从百度百科查询解释如下:http://baike ...

  8. 第三条:用私有构造器或者枚举类型强化Singleton属性

    1.使用单元素的枚举类型 public enum Singleton implements Serializable { INSTANCE; private String field; public ...

  9. 在WPF中使用变通方法实现枚举类型的XAML绑定

    问题缘起 WPF的分层结构为编程带来了极大便利,XAML绑定是其最主要的特征.在使用绑定的过程中,大家都普遍的发现枚举成员的绑定是个问题.一般来说,枚举绑定多出现于与ComboBox配合的情况,此时我 ...

随机推荐

  1. 读EntityFramework.DynamicFilters源码_心得_单元测试03

    上个星期我们只是显示了一个示例,怎么在EF的框架内,注入我们拓展的动态过滤器 第一步:安装EntityFramework.DynamicFilters 第二步:重写OnModelCreating方法 ...

  2. IDEA 2017的插件mybatis plugin(绿色免安装)

    https://blog.csdn.net/u014365133/article/details/78885189 插件下载 https://files.cnblogs.com/files/techl ...

  3. Redis(MySQL和redis怎么分工合作的?)

    新手: redis也是服务器,主要部署在服务器上缓解服务器的压力,对于访问量交大的数据可以先缓存到redis,用户访问时直接访问redis,不用再直接访问数据库,缓解数据库的压力.mysql主要存储数 ...

  4. pyhton基础

    python是一种什么语言?python是一种动态解释性的强类型定义的语言(1)编程语言分类 编译型: 把源程序的每一条语句都编译成机器语言,并保存成二进制文件, 这样运行时计算机可以直接以机器语言来 ...

  5. MySQL在DOS界面对database和table增删改查

    昨天新接触MySQL,学习了一些内容,今天过来复习一下.(吐槽一下:安装个MySQL耗费老子半天时间!!) 学习了一下,大概知道了对数据库基本的增删改查,增add,删drop,改alter,查show ...

  6. NOIP2017:列队

    Sol 考场上: 这不是送\(50\)吗,\(Q^2\)递推就好了 然后,怎么又送\(20\)分??? \(woc\),只有半个小时了,顺利没调出来只有\(50\)分 考后: 神\(TM\)一个大于号 ...

  7. 【转】B树、B-树、B+树、B*树、红黑树、 二叉排序树、trie树Double Array 字典查找树简介

    B  树 即二叉搜索树: 1.所有非叶子结点至多拥有两个儿子(Left和Right): 2.所有结点存储一个关键字: 3.非叶子结点的左指针指向小于其关键字的子树,右指针指向大于其关键字的子树: 如: ...

  8. mac 修改MAC代码

    1.生成一个mac地址: openssl rand -hex | sed 's/\(..\)/\1:/g; s/.$//' 2.关闭无线 sudo /System/Library/PrivateFra ...

  9. 落地生根两周年,微软Azure进入2.0时代

    By: 申元庆 微软亚太科技有限公司董事长 微软亚太研发集团首席运营官 微软中国云计算与企业总经理 仿佛就在转眼间,微软Azure已经在中国落地生根两年了. 长风破浪会有时,直挂云帆济沧海.微软云技术 ...

  10. markdown中设置、调整图片尺寸

    使用百分比描述尺寸 <img src="https://img2018.cnblogs.com/blog/1122471/201902/1122471-2019022218575673 ...