精华内容
下载资源
问答
  • 走进并深刻了解枚举类型 在实际问题中,有些变量取值被限定在一个有限范围内。例如,一个星期内只有七天,一年只有十二个月,一个班每周有六门课程等等。如果把这些量说明为整型,字符型或其它类型显然是不...

    emmm大概是假期太长,以致于基础的知识都快忘掉了,哎。。。那就记个流水账,防止老年痴呆趴

    走进并深刻的了解枚举类型

    在实际问题中,有些变量的取值被限定在一个有限的范围内。例如,一个星期内只有七天,一年只有十二个月,一个班每周有六门课程等等。如果把这些量说明为整型,字符型或其它类型显然是不妥当的。为此,C语言提供了一种称为“枚举”的类型。在“枚举”类型的定义中列举出所有可能的取值,被说明为该“枚举”类型的变量取值不能超过定义的范围。

    谨小慎微:

    枚举类型是一种基本数据类型,而不是一种构造类型,因为它不能再分解为任何基本类型

    枚举类型的定义和枚举变量的说明

    1.枚举的定义枚举类型定义的一般形式为:
     enum 枚举名{ 枚举值表 }; 
    

    在枚举值表中应罗列出所有可用值。这些值也称为枚举元素

    举个栗子

    该枚举名为 weekday,枚举值共有 7 个,即一周中的七天。凡被说明为 weekday 类型变量的取值只能是七天中的某一天。

    2. 枚举变量的说明

    如同结构和联合一样,枚举变量也可用不同的方式说明,即先定义后说明同时定义说明或直接说明
    设有变量 a,b,c 被说明为上述的 weekday,下述三选一:

     1. enum weekday{ sun,mou,tue,wed,thu,fri,sat }; 
    	enum weekday a,b,c; 
    	
     2. enum weekday{ sun,mou,tue,wed,thu,fri,sat }a,b,c; 
     
     3. enum { sun,mou,tue,wed,thu,fri,sat }a,b,c; 
    

    枚举类型变量的赋值和使用

    枚举类型在使用中有以下规定:

    1. 枚举值是常量,不是变量。不能在程序中用赋值语句再对它赋值。

      一个栗子

      对枚举 weekday 的元素再作以下赋值:

    	sun=5; 
    	mon=2; 
    	sun=mon; 
    

    都是错误的。

    1. 枚举元素本身由系统定义了一个表示序号的数值,从 0 开始顺序定义为 0,1,2…。

      例如

      在 weekday 中,sun 值为 0,mon 值为 1,…,sat 值为 6。

    再看个栗子
    main()
    { 
    	 enum weekday 
    	 { sun,mon,tue,wed,thu,fri,sat } a,b,c; 
    	 a=sun; 
    	 b=mon; 
    	 c=tue; 
    	 printf("%d,%d,%d",a,b,c); 
    } 
    

    说明:
    只能把枚举值赋予枚举变量,不能把元素的数值直接赋予枚举变量。如:

    	a=sum; 
    	b=mon; 
    

    正确的。
    而:

    	a=0; 
    	b=1; 
    

    错误的。
    如果一定要把数值赋予枚举变量,则必须用强制类型转换。
    如:

    a=(enum weekday)2; 
    

    其意义是将顺序号为 2 的枚举元素赋予枚举变量 a,相当于:

    	 a=tue; 
    

    还应该说明的是枚举元素不是字符常量也不是字符串常量,使用时不要加单、双引号。

    main()
    { 
    	 enum body 
    	 { a,b,c,d } month[31],j; 
    	 
    	 int i; 
    	 j=a; 
    	 
    	 for(i=1;i<=30;i++)
    	 { 
    		 month[i]=j; 
    		 j++; 
    		 if (j>d) 
    		 	j=a; 
    	 } 
    	 
    	 for(i=1;i<=30;i++)
    	 { 
    		 switch(month[i]) 
    		 { 
    			 case a:printf(" %2d %c\t",i,'a'); break; 
    			 case b:printf(" %2d %c\t",i,'b'); break; 
    			 case c:printf(" %2d %c\t",i,'c'); break; 
    			 case d:printf(" %2d %c\t",i,'d'); break; 
    			 default:break; 
    		 } 
    	 } 
    	 printf("\n"); 
    } 
    

    类型定义符 typedef

    C语言不仅提供了丰富的数据类型,而且还允许由用户自己定义类型说明符,即,允许由用户为数据类型取“别名”。类型定义符 typedef 即可用来完成此功能。
    例如,有整型量 a,b,其说明如下:

     int a,b; 
    

    其中 int 是整型变量的类型说明符。int 的完整写法为 integer,为了增加程序的可读性,可把整型说明符用 typedef 定义为:

    typedef int INTEGER 
    

    这以后就可用 INTEGER 来代替 int 作整型变量的类型说明了。

    //例如: 
     INTEGER a,b; 
    //它等效于: 
     int a,b; 
    

    用 typedef 定义数组、指针、结构等类型将带来很大的方便,不仅使程序书写简单而且使意义更为明确,因而增强了可读性。
    例如:

    typedef char NAME[20]; 
    

    表示 NAME 是字符数组类型,数组长度为 20。然后可用 NAME 说明变量,如:

     NAME a1,a2,s1,s2; 
    

    完全等效于:

     char a1[20],a2[20],s1[20],s2[20]

    又如:

     typedef struct stu 
     { 
    	 char name[20]; 
    	 int age; 
    	 char sex; 
     } STU; 
    

    定义 STU 表示 stu 的结构类型,然后可用 STU 来说明结构变量:

    STU body1,body2; 
    
    typedef 定义的一般形式为:
    typedef 原类型名 新类型名 
    

    其中原类型名中含有定义部分,新类型名一般用大写表示,以便于区别。
    有时也可用宏定义来代替 typedef 的功能,但是宏定义是由预处理完成的,而 typedef则是在编译时完成的,后者更为灵活方便。

    展开全文
  • C语言枚举enum基本用法

    千次阅读 2019-07-04 16:34:28
    1.1枚举enum定义和调用 enum枚举最基本的用法是作为一个自定义的常量集合,比如enum ENUM{val1,val2...下面是一个枚举类型enum的定义和调用示例: enum EVal{val1,val2} Val; void Widget::on_pushButton_6_clic...

    1.1枚举enum定义和调用

    enum枚举最基本的用法是作为一个自定义的常量集合,比如enum ENUM{val1,val2,val3} Enum ;定义完后,可以直接把ENUM作为一个新增数据类型,可以当成int数据类型来用。下面是一个枚举类型enum的定义和调用示例:

    enum EVal{val1,val2} Val;
    
    void Widget::on_pushButton_6_clicked()
    {
    //    Val=val1;
        EVal val=EVal::val2;
        switch (val) {
        case val1:  qDebug()<<"Val==val1";
            break;
        case val2:  qDebug()<<"Val==val2";
            break;
        default:
            break;
        }
    }

    1.2结果输入如下

    1.3总结

    由上面结果可知,当定义一个枚举变量enum(val)后,该变量val只能存储{val1,val2,val3}其中的任意一个变量,而不能存储两个值,这是没意义的。

     

     

    参考内容:

    https://blog.csdn.net/zxc5672123/article/details/87880381(参考:枚举enum调用)

    展开全文
  • 枚举enum就是英文enumerate缩写,也就是列举、排列说明意思。枚举类型C语言一种特殊类型,枚举类型可以让我们程序使用一些固定长度和固定数值变量值范围。

    一、 基本概念

    枚举enum就是英文enumerate的缩写,也就是列举、排列说明的意思。枚举类型是C语言中的一种特殊类型,枚举类型可以让我们的程序使用一些固定长度和固定数值的变量值范围。定义枚举类型:enum 枚举类型 {枚举值列表};

    二、枚举类型的使用

    1、定义枚举类型

    //枚举颜色
    enum color{red=1, oreange=2, yellow=3, green=4, ching=5, blue=6, purple=7};
    
    //枚举一个星期的每一天
    enum week
    {
    	Su, Mo, Tu, We, Th, Fr, Sa
    };
    
    //枚举每一个月
    enum month
    {
    	January, February, March, April, May, June, July, August, September, October, November, December
    };
    

    这样枚举出来的都是一推变量,引用时:

    printf("%-3d %-3d %-3d %-3d %-3d %-3d %-3d", red, oreange, yellow, green, ching, blue, purple); 
    

    也就是直接使用,会直接输出对应的值。

    2、定义枚举类型的变量

    enum week a, b, c;
    a = Su;
    b = Mo;
    c = Tu;
     
    enum month d, e, f;
    d = January;
    e = February;
    f = March;
    

    3、调用枚举类型变量
    每周的日期和每月份的输出也是这样:

    enum week a, b, c;
    a = Su;
    b = Mo;
    c = Tu;
    printf("%d %d %d\n", a, b, c);
    enum month d, e, f;
    d = January;
    e = February;
    f = March;
    printf("%d %d %d\n", d, e, f);
    

    4、如果在定义枚举类型时指定元素的值,也可以改变枚举元素的值
    例如:
    enum weekday{sun=7,mon=1,tue,wed,thu,fri,sat}day;
    这时,sun 为 7,mon 为 1,以后元素顺次加 1,所以 sat 就是 6 了。

    5、枚举值可以用来作判断
    例如:
    if (day==month) {…}
    if (day>month) {…}
    枚举值的比较规则是:按其在说明时的顺序号比较,如果说明时没有人为指定,则第一个枚举元素的值认作 0。

    6、一个整数不能直接赋给一个枚举变量,必须强制进行类型转换才能赋值

    三、枚举案例

    #include <stdio.h>
    void main() 
    { 
    	enum weekday {sun,mon,tue,wed,thu,fri,sat} day; 
    	int k; 
    	printf("请输入0到6的数:"); 
    	scanf("%d",&k);
    	day=(enum weekday)k; 
    
    	switch(day) 
    	{ 
    		case sun: printf("sunday\n");break; 
    		case mon: printf("monday\n");break; 
    		case tue: printf("tuesday\n");break; 
    		case wed: printf("wednesday\n");break; 
    		case thu: printf("thursday\n");break; 
    		case fri: printf("friday\n");break; 
    		case sat: printf("satday\n");break; 
    		default: printf("input error\n");break; 
    	} 
    } 
    

    输入0-6中的一个数字,能够输出对应的星期。

    展开全文
  • 2.使用枚举类型的好处  增加程序的可读性,我们都知道在计算机中所有信息都是用二进制来表示的,如果你用二进制来表示某件事务是非常不直观的,为了使程序更加直观我们引入枚举。 3.枚举的应用 1 /*红色、...

    1.枚举的定义

      enum 枚举名{ 枚举元 素1,枚举元素2,枚举元素3...};

    2.使用枚举类型的好处

      增加程序的可读性,我们都知道在计算机中所有信息都是用二进制来表示的,如果你用二进制来表示某件事务是非常不直观的,为了使程序更加直观我们引入枚举。

    3.枚举的应用

     1 /*红色、黄色、绿色、蓝色,黑色*/
     2 enum color{red,yellor,green,blue,black};
     3 int main()
     4 {
     5     char user_color;
     6     while(1)
     7     {
     8         printf("\n请输入颜色");
     9         scanf("%d",&user_color);
    10         switch(user_color)
    11         {
    12             case red: printf("\n你输入的是红色\n"); break;
    13             case yellor: printf("\n你输入的是黄色\n"); break;
    14             case green: printf("\n你输入的是绿色\n"); break;
    15             case blue: printf("\n你输入的是蓝色\n"); break;
    16             case black: printf("\n你输入的是黑色\n"); break;
    17         }
    18     }
    19 
    20     return 0;
    21 }

      枚举元素列表中,每个元素只能是整型,如果我们不指定某个元素的大小,默认是从0开始排列,如第2行中的枚举列表中red = 0、yellor = 1......black = 4,从这个代码中我们可以看到红色,黄色不再用数字表示,而是用枚举元素来表示红色、黄色等一些有意义的词,而这个枚举元素的名称可以自己定义,枚举元素本质还是数字。

    4.用typedef关键字将枚举类型定义成别名,并利用该别名进行变量声明

     1 typedef enum workday  //此处的workday可以省略,或者改成其他,不会影响后面
     2 {
     3     saturday,
     4     sunday,
     5     monday,
     6     tuesday,
     7     wednesday,
     8     thursday,
     9     friday
    10 } workday; //此处的workday为枚举型enum workday的别名,类似于int

    正如上边代码注释所说,worday可以不要,代码如下

     1 typedef enum
     2 {
     3     saturday,
     4     sunday,
     5     monday,
     6     tuesday,
     7     wednesday,
     8     thursday,
     9     friday
    10 } workday; //此处的workday为枚举型enum workday的别名
    11 workday today, tomorrow; //变量today和tomorrow的类型为枚举型workday,也即enum workday

    在程序中我们是直接可以用某个枚举中的枚举元素的,在STM32开发库中这种枚举用法非常多,下图就是STM32库中的代码示例,利用这个方法开发库,可以大大增加程序的可读性。

     1 typedef enum 
     2 {
     3   LED1 = 0,
     4   LED2 = 1,
     5   LED3 = 2,
     6   LED4 = 3
     7 } Led_TypeDef;
     8 
     9 typedef enum 
    10 {  
    11   BUTTON_WAKEUP = 0,
    12   BUTTON_TAMPER = 1,
    13   BUTTON_KEY = 2,
    14   BUTTON_RIGHT = 3,
    15   BUTTON_LEFT = 4,
    16   BUTTON_UP = 5,
    17   BUTTON_DOWN = 6,
    18   BUTTON_SEL = 7
    19 } Button_TypeDef;

     

     

     

      

      

    转载于:https://www.cnblogs.com/SGY1593279715/p/10936410.html

    展开全文
  • 在实际编程中,有些数据取值往往是有限,只能是非常少量整数,并且最好为每个值都取一个名字,以方便在后续代码中使用,比如一个星期只有七天,一年只有十二个月,一个班每周有六门课程等。 以每周七天为例,...
  • C语言枚举的用法

    千次阅读 2015-08-07 19:03:24
    1. 枚举定义枚举类型定义一般形式为:  enum 枚举名{ 枚举值表 }; 在枚举值表中应罗列出所有可用值。这些值也称为枚举元素。 例如:   该枚举名为weekday,枚举值共有7个,即一周中七天。...
  • C语言——enum枚举类型用法解析

    万次阅读 多人点赞 2018-05-25 17:13:19
    在实际的编程应用中,有的变量...要使用枚举类型的变量,首先需要先定义一个枚举类型名,然后再声明该变量是枚举类型的 例如: enum weekday{ \\该语句定义了一个`枚举类型` MONDAY, TUSEDAY, WEDNESDAY, ...
  • 3枚举类型是一种基本数据类型,数据类型中元素是系统认定,和整型,字符型浮点型数据类型同级别。不存在全局,局部之说。而用枚举类型声明定义变量是有局部和全局说法 以每周七天为例,我们可以使用#...
  • C语言中有一个关键字是enum,枚举类型,不知道大家平时用吗,但是enum关键字在有些时候是非常方面。下面说一下使用enum关键字几种情况。 定义 枚举类型定义用关键字enum标识,形式为: enum 标识符 { 枚举...
  • c语言的枚举类型

    2017-08-18 11:00:21
    而我还是菜鸟看不懂,只好重拾以前的课本,再好好专研枚举类型的用法。  如果一个变量只有几种可能的值,可以定义为枚举类型,所谓的“枚举”就是把可能的值一一罗列出来,但是变量的值只限于罗列出来的值得范围内...
  • C语言枚举变量的用法

    千次阅读 2018-03-29 20:47:16
    枚举类型若定义时不赋初值,那么会默认对第一个元素赋0,后面元素依次+1也可以在定义时给任意成员赋初值,未赋初值使用默认值,即比前一元素大1。如:enum test{a=10,b,c=11,d,e}各个枚举变量值为:a=10,b=...
  • 近日在学习stm32的过程中遇到一些问题,特重新学习了一下C语言关于枚举、结构体、共用体类型的用法,现总结如下>>> 目录·C枚举类型基本定义在stm32中的应用·C结构体类型基本定义初始化作为函数参数在stm...

空空如也

空空如也

1 2 3 4 5 ... 11
收藏数 208
精华内容 83
关键字:

c语言枚举类型的用法

c语言 订阅