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

c语言 枚举类型 uint32_枚举类型(enum)和自定义数据类型(typedef)基础知识详解_第1张图片

枚举数据类型

枚举:一一列举。枚举类型是一些标识符的集合,从形式上看枚举类型就是用大括号将不同的标识符名称放在一起。用枚举类型声明的变量,其变量的值只能取自括号内的这些标识符。关键字: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. 编译器默认将标识符自动赋予整型常数。
  2. 可以自行修改整型常数的值。
  3. 如果只给前几个标识符赋整型常数,编译器会给后面的标识符自动累加赋值。

实例:

//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};
c语言 枚举类型 uint32_枚举类型(enum)和自定义数据类型(typedef)基础知识详解_第2张图片

枚举类型变量

定义变量方法:

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 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<

结果为:

c语言 枚举类型 uint32_枚举类型(enum)和自定义数据类型(typedef)基础知识详解_第3张图片

枚举类型的运算

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

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

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

#include 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=" 

结果为:

c语言 枚举类型 uint32_枚举类型(enum)和自定义数据类型(typedef)基础知识详解_第4张图片

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

#includeusing 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<

结果为:-3

c语言 枚举类型 uint32_枚举类型(enum)和自定义数据类型(typedef)基础知识详解_第5张图片

自定义数据类型

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

语法:

typedef 

注:

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

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

例如:

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

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

typedef char *CString ;#includevoid main(){ CString str ; char temp[] = "Hello World"; str =temp; cout<

结果为:

c语言 枚举类型 uint32_枚举类型(enum)和自定义数据类型(typedef)基础知识详解_第6张图片

注:

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

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

实例:

#includevoid main(){ typedef char *CString;cout<

结果为:

c语言 枚举类型 uint32_枚举类型(enum)和自定义数据类型(typedef)基础知识详解_第7张图片

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

结构体总结

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

c语言 枚举类型 uint32_枚举类型(enum)和自定义数据类型(typedef)基础知识详解_第8张图片

你可能感兴趣的:(c语言,枚举类型,uint32,java枚举类型enum用法)