返回介绍

枚举变量保存符号

发布于 2024-10-10 23:21:28 字数 4483 浏览 0 评论 0 收藏 0

有时你不想保存数字或文本,而是想保存一组符号。如果你想记录一周中的某一天,只想保存 MON-DAY、TUESDAY、WEDNESDAY……这些符号。你不需要保存文本,因为一共只有七种不同的取值。

这就是为什么要发明枚举的原因。

有了枚举,就可以创建一组这样的符号:

enum colors 类型定义的变量只能设为列表中的某个关键字。可以像下面这样定义 enum colors 变量:enum colors favorite = PUCE;

在幕后,计算机会为列表中的每个符号分配一个数字,枚举变量中也只保存数字。至于是什么数字,你完全不用操心,C 程序员只要在代码中写符号就行了。枚举不仅让代码更易于阅读,同时它也能够防止你把值保存成 REB 或 PUSE :

枚举就是这么工作的,但如何用它来记录联合保存了哪个字段呢?来看一个例子……结构与联合用分号(;)来分割数据项,而枚举用逗号。

代码冰箱贴

你既然能用枚举创建新的数据类型,也就能把它保存在结构或联合中。下面这个程序用枚举变量来记录“量”的类型,你能找到丢失的代码吗?#include <stdio.h>typedef enum { COUNT, POUNDS, PINTS} 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){ printf("This order contains "); if (...............== PINTS) printf("%2.2f pints of %s\n", order.amount. ..............., order.name); else if (................ == ..............) printf("%2.2f lbs of %s\n", order.amount.weight, order.name); else printf("%i %s\n", order.amount. ..............., order.name);}int main(){ fruit_order apples = {"apples", "England", .amount.count=144, ...............}; fruit_order strawberries = {"strawberries", "Spain", .amount. ........=17.6, POUNDS}; fruit_order oj = {"orange juice", "U.S.A.", .amount.volume=10.5, ...............}; display(apples); display(strawberries); display(oj); return 0;}













































代码冰箱贴解答

你既然能用枚举创建新的数据类型,也就能把它保存在结构或联合中。下面这个程序用枚举变量来记录“量”的类型,你找到丢失的代码了吗?

 

联合:……于是我对代码说,“瞧,不管你给我的是不是 float ,只要你问我要 int ,我就给你 int 。”

结构:哥们,这么做完全没有道理。

联合:就是没有道理。

结构:人人都知道你只有一块存储空间。

联合:是的,万物一体,佛曰……

枚举:发生了什么?

结构:枚举,闭嘴,这个家伙太过分了。

联合:如果用户只给出一条记录,比如在这个例子中,我就把它保存成 int ,只要用枚举或其他东西记录一下就行了。

枚举:你想让我来做这件事?

结构:闭嘴,枚举。

联合:如果用户希望一次保存多条数据,就应该用你,对吗?

结构:这群人根本不知道什么是秩序。

枚举:什么是秩序?

结构:秩序意味着独立且有序。我在存储器中相继摆放数据,同时保存所有数据。

联合:不错。

结构:同时保存所有数据(字正腔圆)。

枚举:(停顿)有问题吗?

联合:小声点,枚举。我认为这需要由用户来决定,如果他想保存多条数据,就用你;如果想保存有多种类型的数据,就选我。

结构:我给他打个电话。

联合:喂,等等……

枚举:他在给谁打电话,哥们?

结构/联合:闭嘴,枚举。

联合:别惹麻烦了,行吗?

结构:喂?请帮我接蓝牙服务。

联合:喂,我们再考虑一下。

结构:什么?让他过会儿给我回电话?

联合:也许这不是一个好主意。

结构:不用,帮我传句话,朋友。

联合:求你把电话挂掉。

枚举:电话那头是谁?

结构:小声点,枚举,没看见我在打电话么?听好了,你只要告诉他说,如果他想保存 float 和 int 变量就来找我,要么我去找他,明白了吗?喂?喂?

联合:沉住气,冷静。

结构:我 X,转接中!

联合:怎么了?把电话给我……不……电话里在放老鹰乐队的歌!我讨厌老鹰乐队……

枚举:你之所以那么胖,就是因为把字段打包在了一起?

结构:朋友,我们到外面聊两句。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

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

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文