龙空技术网

枚举类型(enum)和自定义数据类型(typedef)基础知识详解

剑云锋 385

前言:

当前小伙伴们对“c语言中enum怎么用”大概比较着重,朋友们都想要剖析一些“c语言中enum怎么用”的相关内容。那么小编在网摘上网罗了一些有关“c语言中enum怎么用””的相关内容,希望看官们能喜欢,各位老铁们一起来了解一下吧!

枚举数据类型

枚举:一一列举。枚举类型是一些标识符的集合,从形式上看枚举类型就是用大括号将不同的标识符名称放在一起。用枚举类型声明的变量,其变量的值只能取自括号内的这些标识符。关键字:enum。

枚举类型的声明

1.枚举类型的一般形式。

enum 枚举类型名 {标识符列表};

实例:

enum weekday{Sunday,Monday,Tuesday,Wednesday,Thursday,Friday,Saturday};

2.带赋值形式的枚举类型声明

enum 枚举类型名{		标识符[=整型常数],		标识符[=整型常数],		...		标识符[=整型常数],}枚举变量;

实例:

enum Weekday{Sunday =0,Monday=1,Tuesday=2,Wednesday=3,Thursday=4,Friday=5,Saturday=6};

注:

编译器默认将标识符自动赋予整型常数。可以自行修改整型常数的值。如果只给前几个标识符赋整型常数,编译器会给后面的标识符自动累加赋值。

实例:

//1.自动赋值 enum weekday{Sunday,Monday,Tuesday,Wednesday,Thursday,Friday,Saturday};//1.等效结果enum weekday{Sunday=0,Monday=1,Tuesday=2,Wednesday=3,Thursday=4,Friday=5,Saturday=6};//2.可自行修改enum weekday{Sunday=3,Monday=2,Tuesday=1,Wednesday=5,Thursday=0,Friday=4,Saturday=6};//3.自动累加赋值enum weekday{Sunday=7,Monday=1,Tuesday=2,Wednesday,Thursday,Friday,Saturday};//3.等效结果enum weekday{Sunday=7,Monday=1,Tuesday=2,Wednesday=3,Thursday=4,Friday=5,Saturday=6};
枚举类型变量

定义变量方法:

enum Weekday{Sunday,Monday,Tuesday,Wednesday,Thursday,Friday,Saturday};[enum] Weekday myday;

关键字:enum 枚举类型名:Weekday 枚举类型变量: myday

注:

在C语言中,枚举类型名 包括关键字enum ,在C++语言中,允许不写关键字enum。

使用枚举变量方法

1.枚举变量的值只能是Sunday到Saturday之一。

myday = Tuesday;myday = Saturday;

2.一个整型数据不能直接赋值给一个枚举变量。

enum weekday{Sunday=7,Monday=1,Tuesday=2,Wednesday,Thursday,Friday,Saturday};enum weekday myday;

myday=3; 是错误的赋值方式。 必须通过强制类型转换来赋值。

例如:

myday =(enum weekday) 3 ; myday =Wednesday; //两个效果等同,均为正确赋值方式。 

3.可以直接定义枚举变量。

enum{Sunday,Monday,Tuesday,Wednesday,Thursday,Friday,Saturday}myday,week_end;

实例赋值输出:

#include <iostream>using namespace std;void main(){ enum weekday{Sunday,Monday,Tuesday,Wednesday,Thursday,Friday,Saturday}; int a =2,b=1; weekday myday; myday =(weekday)a; cout<<myday<<endl; myday=(weekday)(a-b); cout<<myday<<endl; myday=(weekday)(Sunday+Wednesday); cout<<myday<<endl; myday=(weekday)5; cout<<myday<<endl; system("pause"); }

结果为:

枚举类型的运算

枚举值相当于整数,可用枚举值来进行一些运算。

1.利用枚举值作判断比较。

枚举值可以和整型变量一起比较,枚举值之间也可以比较。

#include <iostream>using namespace std;enum weekday{Sunday,Monday,Tuesday,Wednesday,Thursday,Friday,Saturday};void main(){ weekday myday1,myday2; myday1=Monday; myday2=Saturday; int n; n = myday1;  n= myday2+1; cout << "n=" <<n <<endl;	cout << "myday1=" << myday1 << endl;	cout << "myday2=" << myday2 << endl; if(n>myday1) //枚举值和整型变量比较 cout<<"n>myday1"<<endl; if(myday1<myday2) //枚举值和枚举值比较 cout<<"myday1<myday2"<<endl;  system("pause");}

结果为:

2.利用枚举类型进行减法运算。 枚举值可直接进行减法运算。

#include<iostream>using namespace std;void main(){ enum weekday { Sunday = 2, Monday =3,  Tuesday=4, Wednesday=5, Thursday=6, Friday=7, Saturday=1 };weekday myday1;weekday myday2;myday1 =Sunday; //2myday2 = Wednesday; //5cout<<myday1-myday2<<endl; //-3system("pause");} 

结果为:-3

自定义数据类型

自定义数据类型,即用户自己定义类型说明符。其实就是由用户为定义的数据类型名另外再取一个别名,以便简化对类型名的引用,增加程序的可读性。 运用type of 完成操作。

语法:

typedef<原类型名> <新类型名>

注:

原类型名:任意已定义的数据类型,包括系统的各种基本数据类型名以及用户自定义的构造类型名。

新类型名: 用户自己命名的标识符,在以后变量的声明中可以直接使用该名称。

例如:

 typedef int integerinteger a ,b;int a,b; //等效

使用自定义数据类型输出数据:

typedef char *CString ;#include<iostream>void main(){ CString str ; char temp[] = "Hello World"; str =temp; cout<<str<<endl; system("pause");}

结果为:

注:

程序将字符指针重命名为CString ,CString就代表字符指针。

自定义数据类型的大小同原数据类型一样。

实例:

#include<iostream>void main(){ typedef char *CString;cout<<sizeof(CString)<<endl;cout<<sizeof(char*)<<endl;system("pause");}

结果为:

即 CString和char* 一样,都是占用4个字节空间。

结构体总结

使用C语言开发的程序一般都大量使用结构体,在C++语言中更是增加了结构体的功能,程序设计阶段应多将关联紧密的数据组合成一个结构体,便于阅读和二次开发。

标签: #c语言中enum怎么用