c - 在枚举中使用实例化
问题描述
我正在研究枚举,我遇到了代码中枚举变量的实例化。但是枚举在没有实例化的情况下工作得很好,如下代码所示:
#include<stdio.h>
enum year{Jan, Feb, Mar, Apr, May, Jun, Jul,Aug, Sep, Oct, Nov, Dec};
int main()
{
int i;
for (i=Jan; i<=Dec; i++)
printf("%d ", i);
return 0;
}
输出是:
0 1 2 3 4 5 6 7 8 9 10 11
那么在枚举类型中声明一个变量和那个有什么用。如果我愿意,我可以在 int 或 float 中声明它,效果很好。这可能是一个幼稚的问题,但我无法获得此功能的实际应用。
#include<stdio.h>
enum week{Mon, Tue, Wed, Thur, Fri, Sat, Sun};
int main()
{
enum week day;
day = Wed;
printf("%d",day);
return 0;
}
解决方案
Jan
显然是(?)一个月,0
根本不清楚。
然后,假设您选择了有意义的名称,它也可以用作类型注释。year
很清楚(或者如果选择了一个好名字,它会很清楚),int
不是。在您的示例中,您应该为枚举使用不同的名称。喜欢month
和week_day
。
最后,在您的示例中,它们并不意味着表示整数值(除非您需要用于计算,例如月份之间的差异)。因此,简单地将它们打印为数字并没有多大意义。
推荐阅读
- javascript - 更改每个文件或每个 describe() 块的 mocha 选项
- node.js - NodeJS + Google Login + Firebase Functions 导致解码 Firebase 会话 cookie 失败
- api - 未找到 PUT 方法 appscript api 密钥
- json - Json 多参数如何解析?
- javascript - 将 Array.from 作为回调传递给 Array.flatMap 时,为什么会出现 TypeError: 0 is not a function?
- google-play - 从变量设置 DevOps 任务下拉选项
- javascript - 组件列表:函数没有收到正确的参数
- reactjs - 测试 Window.Location.Pathname 测试库 + jest
- spring - 使用 Spring Authorization Server 配置 Spring Gateway
- sql - 如果包含某些字符串 postgres 则拆分文本