关于枚举,在我以前写程序的时候,几乎是没有使用过的,只是偶尔会在一下别人写的驱动库中有看到过。今天看了朱老师的视频,准备将枚举相关的东西总结一下。
一、关于枚举,你需要知道
(1)在C语言中就是一些符号常量的集合。
(2)枚举中的符号本质上是int类型的常量。
(3)使用枚举时我们往往关注是符号本身,而不是符号的值是多少。
(4)枚举可以将一些相关联的符号封装在一个枚举中,是一种多选一的。
二、代码实践操作
【例1】:枚举定义(方法1)
1 #include <stdio.h> 2 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;这句就很好理解了)。
注:以上程序是根据“朱老师物联网视频”中参考得到,特此申明。
时间: 2024-11-06 07:11:06