精华内容
下载资源
问答
  • 先看这样一段代码,你认为是对还是错呢? enum boolean{true,false}; boolean bl=false; 乍一看还真以为是对,其实,这样写是错,boolean 未定义。...①:定义枚举类型 enum boolean{true,f

    先看这样一段代码,你认为是对的还是错的呢?

    enum boolean{true,false};
    boolean bl=false;
    

    乍一看还真以为是对的,其实,这样写是错的,boolean 未定义。

    报错如下:

    image-20210424105134414

    应该这样定义 enum boolean b1=false;,但是如果非要用 boolean 来定义变量的话,就需要对其重定义了

    如:typedef enum boolean boolean;

    也就是说我们想直接用枚举名来定义变量需要两步

    ①:定义枚举类型

    enum boolean{true,false};
    

    ②:对枚举变量名重定义

    typedef enum boolean boolean;
    

    接着就可以用枚举名定义变量了,但是,这其实也可以一步搞定

    如下:

    typedef enum boolean {
    	false = 0, true = !false
    } boolean;
    

    再来看看人家的解释吧

    image-20210424110556448

    举个例子说明一下:

    #include <stdio.h>
    
    enum DAY1
    {
          MON1=1, TUE1, WED1, THU1, FRI1, SAT1, SUN1
    };
    /*
    enum DAY1
    {
          MON1=1, TUE1, WED1, THU1, FRI1, SAT1, SUN1
    } day1;	//定义枚举类型的同时定义枚举变量也可以
    */
    
    enum DAY2
    {
          MON2=10, TUE2, WED2, THU2, FRI2, SAT2, SUN2
    };
    typedef enum DAY2 DAY2;
    
    typedef enum boolean {
    	false = 0, true = !false
    } boolean;
     
    
    int main()
    {
    	enum DAY1 day1;			//若是用DAY1 day1 则是错误的
    	DAY2 day2;				//已经对DAY2 重定义过,正确
    	boolean b = false;		//boolean重定义过了,所以可以
    	if(b == true)
    	{
    		 // 遍历枚举元素
    		for (day1 = MON1; day1 <= SUN1; day1++) {
    			printf("枚举元素1:%d \n", day1);
    		}	
    	}
    	else if(b == false)
    	{
    		// 遍历枚举元素
    		for (day2 = MON2; day2 <= SUN2; day2++) {
    			printf("枚举元素2:%d \n", day2);
    		}
    	}
       
    }
    

    运行结果:

    image-20210424111736258

    展开全文
  • 一个变量只能有几种可能值,这样变量可以定义枚举类型; 变量值只能在列举出来范围内,其他值对该变量没有意义。 2.枚举类型的声明: enum EWeekday //enumeration { EWeekday1, //注意这儿都是...

    1.枚举类型:
    一个变量只能有几种可能的值,这样的变量可以定义成枚举类型;
    变量的值只能在列举出来的值的范围内,其他的值对该变量没有意义。

    2.枚举类型的声明:

    enum EWeekday          //enumeration
    {
    	EWeekday1,        //注意这儿都是逗号
    	EWeekday2,
    	EWeekday3,
    	EWeekday4,
    	EWeekday5,
    	EWeekday6,
    	EWeekday7        //最后一个这儿没有符号
    };
    

    注意点①
    枚举元素按常量处理,所以称作枚举常量。他们不是变量,所以不要对他们进行赋值,即枚举元素的值是固定的。
    注意点②
    枚举元素是常量,其值是一个整数,按照元素声明时候的顺序从0开始依次进行+1操作,默认的值就是:0,1,2,3,…。如下例:

    #include"pch.h"
    #include<iostream>
    using namespace std;
    
    enum EWeekday
    {
    	EWeekday1,         //默认其值为0
    	EWeekday2,
    	EWeekday3,
    	EWeekday4,
    	EWeekday5,
    	EWeekday6,
    	EWeekday7
    };
    
    int main()
    {
    	int a = EWeekday1, b = EWeekday2, c = EWeekday3, d = EWeekday4, e = EWeekday5, f = EWeekday6, g = EWeekday7;
    	cout << "a=" << a << '\t' << "b=" << b << '\t' << "c=" << c << '\t' << "d=" << d << '\t' << "e=" << e << '\t' << "f=" << f << '\t' << "g=" << g << endl;
    }
    

    运行结果为:在这里插入图片描述
    注意点③:
    枚举元素有默认的值,但也可以在声明的时候指定值。如下例:

    #include"pch.h"
    #include<iostream>
    using namespace std;
    
    enum EWeekday
    {
    	EWeekday1=3,
    	EWeekday2=4,
    	EWeekday3=5,              //**这里的赋初值最好是增大,避免出现重复**,以免后续编程出bug。
    	EWeekday4,                //未赋初值,∴按照他的上一个元素的值+1的规则进行默认赋值,因此它的值为6。
    	EWeekday5,
    	EWeekday6,
    	EWeekday7
    };
    
    int main()
    {
    	int a = EWeekday1, b = EWeekday2, c = EWeekday3, d = EWeekday4, e = EWeekday5, f = EWeekday6, g = EWeekday7;
    	cout << "a=" << a << '\t' << "b=" << b << '\t' << "c=" << c << '\t' << "d=" << d << '\t' << "e=" << e << '\t' << "f=" << f << '\t' << "g=" << g << endl;
    }
    

    运行结果为:在这里插入图片描述
    注意点④:
    枚举值可以用来进行跟整数一样的判断、比较,switch-case 等操作

    3.枚举类型和结构体类型结合:

    #include"pch.h"
    #include<iostream>
    using namespace std;
    
    enum ESex                  //定义枚举类型
    {
    	ESex_Male,
    	ESex_Female
    };
    
    struct Student            //定义Student这个结构体
    {
    	string name;
    	int anum;
    	ESex sex;
    	int age;
    };
    
    int main()
    {
    	Student stu;
    	stu.sex = ESex_Male;                     //枚举类型和结构体类型结合
    	cout << "stu.sex=" << stu.sex << endl;
    }
    

    运行结果为:在这里插入图片描述

    4.用 typedef 类型声明新的类型名字
    使用 typedef 声明一个新的类型名字来代替已有的类型名。注意是新的类型名字,只是名字而已,不是一种全新的类型,只是改个名字而已。

    #include"pch.h"
    #include<iostream>
    using namespace std;
    
    struct Student
    {
    	string name;
    	int anum;
    	char sex;
    	int age;
    };
    
    typedef unsigned int uint;
    typedef int myint;
    typedef Student Stu;           //这仨就是用 typedef 类型声明新的类型名字
    
    int main()
    {
    	uint a = 2;
    	myint b = 3;
    	Stu Stu;
    }
    
    展开全文
  • 枚举类型的定义和枚举变量的说明

    千次阅读 2019-09-24 01:56:18
    枚举的定义枚举类型定义的一般形式为: enum 枚举{ 枚举值表 }; 在枚举值表中应罗列出所有可用值。这些值也称为枚举元素。 例如: 该枚举为weekday,枚举值共有7个,即一周中的七天。凡被说明为weekday类型...
    .枚举的定义枚举类型定义的一般形式为:
     enum 枚举名{ 枚举值表 };

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

    例如:

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

    2.枚举变量的说明

    如同结构和联合一样,枚举变量也可用不同的方式说明,即先定义后说明,同时定义说明或直接说明。

    设有变量a,b,c被说明为上述的weekday,可采用下述任一种方式:

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

    或者为:

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

    或者为:

    enum {sun,mou,tue,wed,thu,fri,sat }a,b,c;

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

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

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

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

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

    都是错误的。

    2.枚举元素本身由系统定义了一个表示序号的数值,从0开始顺序定义为0,1,2…。如在weekday中,sun值为0,mon值为1,…,sat值为6。
    【例11.10】
    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;

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

    【例11.11】
    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");
    }
    

    11.11类型定义符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则是在编译时完成的,后者更为灵活方便。

    转载于:https://www.cnblogs.com/SFHa/p/8779324.html

    展开全文
  • 枚举类型的使用和定义

    万次阅读 多人点赞 2019-04-17 11:07:33
    枚举类型的定义 enum<类型名>{枚举常量表} typedef enum<类型名>{枚举常量表}类型别名; enum<类型名>{枚举常量表} 枚举变量名; //有时甚至可以省略类型名 enum {枚举常量表} 枚举变量名; 枚举...

    枚举类型的定义

    enum<类型名>{枚举常量表}
    typedef enum<类型名>{枚举常量表}类型别名;
    enum<类型名>{枚举常量表} 枚举变量名;
    //有时甚至可以省略类型名
    enum {枚举常量表} 枚举变量名;
    

    枚举类型的使用

    enum Weekday{Mon,Tue,Wed,Thu,Fri,Sat,Sun};
    Weekday weekday1=Mon;
    cou<<weekday<<endl;
    //输出为0 编译器会默认从0开始给枚举常量编号
    
    enum color {RED,GREEN=2,WHITE,BLACK} color1;
    //RED=0 GREEN=2,WHITE=3,BLACK=4
    //编译器会根据用户给枚举常量赋的值 顺序给后面的常量赋值 枚举常量的只可以重复
    

    注意:不同的枚举类型的枚举常量表中的元素不能相同 否则会报错重定义
    如果我们有两个枚举常量相同的枚举类型 可以使他们在不同的命名空间里定义
    例如:

    enum Color_set1 {RED,WHITE,BLACK};
    enum Color_set2 {GREEN,BLUE,RED};
    //编译时报错 
    

    不能直接给枚举变量赋整数型初始值;
    枚举变量能直接输出 不能直接输入
    不同类型的枚举变量不能相互赋值

    展开全文
  • 1、枚举类型:如果一个变量只能有几种可能值,这样变量可以定义枚举类型。所谓 “枚举” 是指可以将变量值一一列举出来,变量值只能在列举出来范围内,其他值对该变量没有意义,例如:星期几、...
  • 枚举类型的定义中的标识符其实就可以理解为int型的变量。 使用typedef定义: #include<iostream> using namespace std; int main() { typedef enum Statuss{success, fail, fatal, range_error} Statuss;
  • 结构体的定义 1、`struct 结构体 { 成员类型 成员; … };2、省略结构体 struct { 成员类型 成员; ... }结构体变量; 成员可以是其他已定义结构体的类型,但不能是自己结构体的类型,可以是自己...
  • 枚举类型

    2019-02-20 10:56:45
    以下对枚举类型名的定义中正确的是()。 A enum a={sum,mon,tue}; B enum a {sum=9,mon=-1,tue}; C enum a={"sum","mon","tue"}; D enum a {"sum","mon"...
  • 定义一个为 TrfcLightenum类型。它包含GREEN、RED和YELLOW三 个常量表示交通灯三种颜色。通过vaus(方法和odinal(方万法循环并打印每一个值及其 顺序值。编写一个swich语句,为TrfTcLight每个常量输出...
  • 枚举类型常用于定义常量类型优势:·类型安全·紧凑有效数据定义·可与其他程序交互·运行效率高一般以内部类形式存在,枚举类型的构造方法一般以private修饰。通俗定义方法:public enum 类名{ 常量.... }...
  • 这样,当跨平台移植程序时,我们只需要修改一下 typedef 的定义即可,而不用对其他源代码做任何修改。 2.为自定义数据类型(结构体、共用体和枚举类型)定义简洁的类型名称。 以结构体为例,下面定义一个为Person...
  • 1.枚举的定义 为什么使用枚举: /* * 1.enum:定义枚举的关键字;...枚举类型名.枚举项目】的方式去获取); */ enum Weekss{MONDAY,TUESDAY,WEENDENSDAY,THURSDAY,FRIDAY,SATURDAY,SUNDAY, THURSDAYs
  • 枚举类型的使用

    2021-01-29 22:15:25
    enum 枚举类型名 { 枚举值1,枚举值2 } 结果只有两种情况,建议使用布尔类型。结果超过两种并且还是可以一枚一枚列举出来,建议使用枚举类型。例如:颜色、四季、星期等都可以使用枚举类型。 ...
  • 在实际编程中,有些数据取值往往是有限,只能...而用枚举类型声明定义的变量是有局部和全局说法 以每周七天为例,我们可以使用#define命令来给每天指定一个名字: #include <stdio.h> #define M..
  • C++枚举类型和typedef声明新的类型名

    千次阅读 2017-06-12 21:21:40
    如果一个变量只能有几种可能值,可以定义枚举类型。所谓枚举类型就是把变量值一一列举出来,变量值只能在列举出来范围内。enum weekday{sun,mon,tue,wed,thu,fri,sat}; 上面声明了一个枚举类型weekday...
  • C++的枚举类型

    2018-09-26 01:41:01
    枚举类型的定义 枚举类型(enumeration)是C++中的一种派生数据类型,它是由用户定义的若干枚举常量的集合。 定义格式:枚举类型的定义格式为: &nbsp; &nbsp; enum &lt;类型名&gt; {&lt;枚举常量...
  • 枚举类型的基本用法

    2018-09-29 17:24:00
    枚举类型基本用法: 枚举常量是枚举类型中值,即枚举值。枚举类型是一种用户定义的类型,只有用户在程序中...它是一条枚举类型定义语句,该语句以enum保留字开始,接着为枚举类型名,它是用户命名一个标识...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,198
精华内容 879
关键字:

枚举类型名的定义