C 语言高级数据结构 之 枚举

发布于 2024-05-09 07:54:32 字数 2034 浏览 36 评论 0

可以在联合中保存各种可能的值,但是保存以后就无法知道它的类型,如果需要记录联合中保存的值类型,则需要枚举

// 枚举所有可能的颜色
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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

荒岛晴空

暂无简介

0 文章
0 评论
22 人气
更多

推荐作者

ni139999

文章 0 评论 0

Smile

文章 0 评论 0

木子李

文章 0 评论 0

仅此而已

文章 0 评论 0

qq_2gSKZM

文章 0 评论 0

内心激荡

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文