关于枚举,在我以前写程序的时候,几乎是没有使用过的,只是偶尔会在一下别人写的驱动库中有看到过。今天看了朱老师的视频,准备将枚举相关的东西总结一下。
一、关于枚举,你需要知道
(1)在C语言中就是一些符号常量的集合。
(2)枚举中的符号本质上是int类型的常量。
(3)使用枚举时我们往往关注是符号本身,而不是符号的值是多少。
(4)枚举可以将一些相关联的符号封装在一个枚举中,是一种多选一的。
二、代码实践操作
【例1】:枚举定义(方法1)
1 #include2 3 // 枚举定义:方法一 4 enum week 5 { 6 SUN, 7 MON, 8 TUE, 9 WEN,10 THU,11 FRI,12 SAT,13 };14 15 int main(void)16 {17 // 测试:方法一18 enum week today; // 声明19 today = MON;20 printf("today = %d.\n", today); // 结果是:today = 1.21 22 return 0;23 }
结果:
分析:说明枚举使用是可以直接用MON,而不需要使用“today.MON”,同时也说明,枚举中的定义过了符号不能在另一个符号中再定义。
【例2】:枚举定义(方法2)
1 // 枚举定义:方法二 2 enum week 3 { 4 SUN, 5 MON, 6 TUE, 7 WEN, 8 THU, 9 FRI,10 SAT,11 }today,yesterday;
说明:使用的方法同上。
【例3】:枚举定义(方法3)
1 // 枚举定义:方法三 2 enum 3 { 4 SUN, 5 MON, 6 TUE, 7 WEN, 8 THU, 9 FRI,10 SAT,11 }today,yesterday;
说明:看到这里是不是想起了结构体,例3与例2不同的是没有了week,但是对于枚举today的使用方法还是一样的。千万不要以为enum后面没有了东西就是错的了,这样定义也是正确的。
【例4】:枚举定义(方法4)typedef的介入
1 // 枚举定义:方法四 2 typedef enum week 3 { 4 SUN, 5 MON, 6 TUE, 7 WEN, 8 THU, 9 FRI,10 SAT,11 }WK;12 13 int main(void)14 {15 // 测试:方法四16 WK today; 17 today = SAT;18 printf("today = %d.\n", today); 19 20 return 0;21 }
结果:
分析:将以上的程序结合学过的结构体的typedef,就会发现定义一个枚举时(wk today;这句就很好理解了)。
注:以上程序是根据“朱老师物联网视频”中参考得到,特此申明。