C 语言高级数据结构 之 枚举
可以在联合中保存各种可能的值,但是保存以后就无法知道它的类型,如果需要记录联合中保存的值类型,则需要枚举
// 枚举所有可能的颜色 enum colors {RED, GREEN, PUCE}; // 值以逗号分隔
用 enum colors
定义的变量只能设为列表中的几个关键字:
enum colors myColor = RED;
如下水果订单实例:
// 设置单位,枚举类型 typedef enum { COUNT, // 个数 POUNDS, // 磅 PINGS // 品脱 } unit_of_measure; // 数量 typedef union { short count; float weight; float volume; } quantity; // 水果订单 typedef struct { const char *name; const char *country; quantity amount; // 总计 unit_of_measure units; // 单位 } fruit_order; void display(fruit_order order) { if( order.units== PINGS) { printf("%2.2f pings of %s\n", order.amount.volume, order.name); } else if (order.units == POUNDS) { printf("%2.2f lbs of %s\n", order.amount.weight, order.name); } else { printf("%i %s\n", order.amount.count, order.name); } } int main(int argc, char *argv[]) { fruit_order apples = {"apples", "China", .amount.count = 144, COUNT}; fruit_order strawberries = {"strawberries", "USA", .amount.weight=17.6, POUNDS}; fruit_order oj = {"orange", "China", .amount.volume=10.5, PINGS}; display(apples); display(strawberries); display(oj); return 0; }
枚举这么 NB 的东西讲的也太少了,C 语言详解 - 枚举类型 这篇文章讲得不错:
enum DAY { MON=1, TUE, WED, THU, FRI, SAT, SUN };
- 枚举型是一个集合,集合中的元素(枚举成员) 是一些命名的整型常量,元素之间用逗号
,
隔开。 - DAY 是一个标识符,可以看成这个集合的名字,是一个可选项,即是可有可无的项。
- 第一个枚举成员的默认值为整型的 0,后续枚举成员的值在前一个成员上加 1。
- 可以人为设定枚举成员的值,从而自定义某个范围内的整数。
- 枚举型是预处理指令
#define
的替代。 - 类型定义以分号
;
结束。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
上一篇: C 语言高级数据结构 之 联合
下一篇: 彻底找到 Tomcat 启动速度慢的元凶
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论