在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
近期在写数据结构的广义表时候用到了这个概念,在学习C语言的时候没有太注意们这里学一下。 我在网上结合了非常多资料,这里自己总结一下。 首先说。JAVA和C++中都有枚举类型。 假设一个变量你须要几种可能存在的值,那么就能够被定义成为枚举类型。之所以叫枚举就是说将变量或者叫对象可能存在的情况也能够说是可能的值一一例举出来。 一个铅笔盒中有一支笔,但在没有打开之前你并不知道它是什么笔,可能是铅笔也可能是钢笔。 这里有两种可能,那么你就能够定义一个枚举类型来表示它! enum box{pencil,pen}; 这个枚举变量内含有两个元素也称枚举元素在这里是pencil和pen,分别表示铅笔和钢笔。 假设你想定义两个具有相同特性枚举类型的变量那么你能够用例如以下的两种方式进行定义! enum box{pencil,pen}; enum box box2;//或者简写成box box2; 再有一种就是在声明的时候同一时候定义。 这里看起来非常像结构体; 枚举变量中的枚举元素系统是依照常量来处理的。故叫枚举常量, 他们是不能进行普通的算术赋值的,(pencil=1;)这种写发是错误的, 可是你能够在声明的时候进行赋值操作!
enum box{pencil=1,pen=2}; 可是这里要特别注意的一点是,假设你不进行元素赋值操作那么元素将会被系统自己主动从0開始自己主动递增的进行赋值操作,说到自己主动赋值,假设你仅仅定义了第一个那么系统将对下一个元素进行前一个元素的值加1操作 比如: enum box{pencil=3,pen};//这里pen就是4系统将自己主动进行pen=4的定义赋值操作。 样例: //枚举类型C语言 //杨鑫 #include <stdio.h> #include <stdlib.h> int main() { enum egg{a, b, c}; enum egg test; test = a; //对枚举变量test进行赋予元素操作,假设不赋值的话,默认是最后一个元素 switch(test) { case a: printf("test的值是a\n"); break; case b: printf("test的值是b\n"); break; case c: printf("test的值是c\n"); break; } return 0; } C++实现: #include <iostream> using namespace std; int main() { enum egg {a,b,c}; enum egg test; //在这里你能够简写成egg test; test = c; //对枚举变量test进行赋予元素操作。这里之所以叫赋元素操作不叫赋值操作就是为了让大家明确枚举变量是不能直接赋予算数值的。比如(test=1;)这种操作都是不被编译器所接受的,正确的方式是先进行强制类型转换比如(test = (enum egg) 0;)! if (test==c) { cout <<"枚举变量推断:test枚举相应的枚举元素是c" << endl; } if (test==2) { cout <<"枚举变量推断:test枚举元素的值是2" << endl; } cout << a << "|" << b << "|" << test <<endl; test = (enum egg) 0; //强制类型转换 cout << "枚举变量test值改变为:" << test <<endl; cin.get(); return 0; } 看到这里要最后说一个问题,就是枚举变量中的枚举元素(或者叫枚举常量)在特殊情况下是会被自己主动提升为算术类型的! 枚举类型 在实际问题中。有些变量的取值被限定在一个有限的范围内。比如,一个星期内仅仅有七天,一年仅仅有十二个月, 一个班每周有六门课程等等。 |
2023-10-27
2022-08-15
2022-08-17
2022-09-23
2022-08-13
请发表评论