枚举类型可以被赋值,但其赋值不同于普通变量,主要为以下两点:
1. 非枚举类型值赋值给枚举类型
>需要借助类型强制转换
>举例:
typedef enum
{
Monday = 1, //将枚举类型的第一个变量置为1, 则后面的依次为2, 3, 4, 5
Tuesday,
Wednesday,
Thursday,
Friday
}Weekday;
Weekday Working;
unsigned char day;
day = 2;
Working = day; //错误
Working = 2; //错误
Working = (Weekday)day; //正确. 即将Working置为序号为2的常量,也即Working = Tuesday
//(注: 此处强制类型转换需要用定义的枚举类型Weekday,而不是枚
//举类型定义的变量Working)
Working = (Weekday)2; //正确.
2. 枚举类型值赋值给枚举类型
>举例:
typedef enum
{
Monday = 1, //将枚举类型的第一个变量置为1, 则后面的依次为2, 3, 4, 5
Tuesday,
Wednesday,
Thursday,
Friday
}Weekday;
Weekday Working;
Working = Wednesday; //正确
总结:枚举变量由其中的枚举元素构成,每个枚举元素的值(枚举值)是常量,只能把枚举值赋予枚举变量。同时枚举类型是一种基本数据类型,可以通过类型强制转换将其他类型的变量赋值给枚举类型。
参考链接:
1. enum类型变量的使用和赋值 - CSDN博客 https://blog.csdn.net/maochengtao/article/details/46606853