枚举类型数据怎么获取(枚举类型enum和自定义数据类型)
枚举类型数据怎么获取(枚举类型enum和自定义数据类型)enum Weekday{Sunday Monday Tuesday Wednesday Thursday Friday Saturday}; [enum] weekday myday; 关键字:enum 枚举类型名:Weekday 枚举类型变量: myday//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
枚举数据类型枚举:一一列举。枚举类型是一些标识符的集合,从形式上看枚举类型就是用大括号将不同的标识符名称放在一起。用枚举类型声明的变量,其变量的值只能取自括号内的这些标识符。关键字: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; //2 myday2 = Wednesday; //5 cout<<myday1-myday2<<endl; //-3 system("pause"); }
结果为:-3
自定义数据类型自定义数据类型,即用户自己定义类型说明符。其实就是由用户为定义的数据类型名另外再取一个别名,以便简化对类型名的引用,增加程序的可读性。 运用type of 完成操作。
语法:
typedef<原类型名> <新类型名>
注:
原类型名:任意已定义的数据类型,包括系统的各种基本数据类型名以及用户自定义的构造类型名。
新类型名: 用户自己命名的标识符,在以后变量的声明中可以直接使用该名称。
例如:
typedef int integer integer 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 语言中更是增加了结构体的功能,程序设计阶段应多将关联紧密的数据组合成一个结构体,便于阅读和二次开发。