enum在c++语言中是什么意思?c语言enum用法是什么意思

enum是c语言的关键字 。枚举数据类型称为枚举数据类型 , 枚举数据类型描述整数值的集合 。枚举类型是预处理指令#define的替代 , 枚举与宏非常相似 。宏在预处理阶段用相应的值替换名称 , 枚举在编译阶段用相应的值替换名称 。
typeName是枚举类型的名称 , 大括号中的元素(枚举成员)是常量而不是变量 。这个请一定要弄清楚 。枚举成员的是常量 , 因此不能为它们赋值 。只能分配给其他变量枚举类型(枚举标签)、枚举成员(枚举常量)、枚举变量的差异 。如果枚举类型和枚举变量定义在一起 , 则可以不写枚举类型的名称(枚举week中的week ) 。
第一个:
enum week{Mon=1 , Tues , Wed , Thurs}num;
第二个:
enum {Mon=1 , Tues , Wed , Thurs}num;
这其实和结构体中的无名结构很相似 。定义枚举类型变量和定义结构类型变量看起来很相似 , 但两者之间的差异很大 。一个结构型变量包含多个成员 , 相当于打包的快递箱 。
另一方面 , 枚举类型变量是不同的 。枚举类型变量不是包含几个成员的集合 。枚举类型变量与int和char类型的变量实际上相同 。但是 , 枚举类型变量的赋值只能在自己的枚举成员中赋值 。num赋值只能使用枚举成员Mon、Tues、Wed和Thurs , 不能为其他枚举类型的枚举成员赋值 。

enum在c++语言中是什么意思?c语言enum用法是什么意思

文章插图
枚举变量的定义与结构变量的定义相同 , 有两种定义方法:
第一个是(定义枚举类型的同时定义枚举变量) 。
enum week{Mon=1 , Tues , Wed , Thurs}num;
第二(定义枚举类型 , 然后定义枚举变量) 。
enum week{Mon=1 , Tues , Wed , Thurs};enum week num;
枚举类型的特征:
用另一个例子说明枚举类型的特征
例1:( 不明确说明枚举常量的值) 。
enum week{Mon , Tues , Wed , Thurs , Fri , Sat , Sun};
如果未显示说明 , 则枚举常量(即大括号中的常量名称)默认情况下第一个枚举常量的值为0 , 然后为每个枚举常量递增1 , 因此请尝试使用Mon=0、Tues=1 , Sun=6进行验证enum week{Mon , Tues , Wed , Thurs , Fri , Sat , Sun};printf ( mon=% d\NTU es=% d\nwed=% d\nthu RS=% d\nfri=% d\nsat=% d\nsun=% d\n ' , mon , Tues
执行结果:
enum在c++语言中是什么意思?c语言enum用法是什么意思

文章插图
例2:(显示说明部分列举常数的值) 。
enum week{Mon=1 , Tues , Wed , Thurs , Fri , Sat , Sun};
上面的代码只明确显示枚举常量Mon的值为1 , 未指定的枚举名称的值从最后指定的值向后依次递增 。请注意 , 这是最后指定的值
enum week{Mon=1 , Tues , Wed , Thurs , Fri , Sat , Sun};
printf ( mon=% d\NTU es=% d\nwed=% d\nthu RS=% d\nfri=% d\nsat=% d\nsun=% d\n ' , mon , Tues
执行结果:
enum在c++语言中是什么意思?c语言enum用法是什么意思

文章插图
执行结果:
enum在c++语言中是什么意思?c语言enum用法是什么意思

文章插图
例3:(赋值给枚举变量) 。
enum week{Mon=1 , Tues , Wed , Thurs}num;num=(enumweek ) 10;printf('%d ' , num );
整数不能直接分配给枚举变量 。必须先按枚举变量所属的枚举类型进行类型强制转换 , 然后再赋值 。在上面的代码中 , 将10赋值给枚举变量时执行的强制类型转换在将整数常量10转换为enum week类型后将其赋给num变量 。
总结:
1、如果未显示说明 , 枚举常量(即大括号中的常量名称)默认情况下第一个枚举常量的值为0 , 然后为每个枚举常量递增12、部分显示说明时 , 未指定枚举名称的值将根据前面指定的值之一向后依次递增;
3、整数不能直接赋给枚举变量 。必须先按枚举变量所属的枚举类型进行类型强制转换 , 然后再分配值;
4、同一枚举类型内的不同枚举成员可以具有相同的值;


推荐阅读