首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场

C和枚举
EN

Stack Overflow用户
提问于 2014-08-29 17:27:23
回答 4查看 95关注 0票数 0

创建一个enum类型的变量有什么好处?我知道如何定义枚举类型和变量--但是,我不太明白它的优点?

代码语言:javascript
运行
复制
#include <stdio.h>
int main(void){

    enum colour{
        white,
        red=2,
        green,
        blue,
        yellow,
        black
    } jacket;

    jacket=50;
    int shirt=yellow;
    printf("%d\n",jacket);
    printf("%d",shirt);

   return 0;
}

在上面的代码中,jacket被定义为enum,而shirt被定义为整数。enum类型并不阻止我使用未指定为元素的值。integer类型也不会阻止我将它分配给来自enum类型的值。

上面的代码提供了以下输出:

代码语言:javascript
运行
复制
50
5

这些变量之间在功能上有什么区别,如果有的话?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2014-08-29 17:31:31

enum只是赋予常量符号值的一种方式;常量只是整数,与定义相比,它有几个优点:如果是连续的,则自动创建值,而enum则服从块作用域。它还告诉其他程序员,除了变量之外,您只接受这些值。调试器可以显示符号名,这可能会有所帮助,而不仅仅是显示原始值。

票数 2
EN

Stack Overflow用户

发布于 2014-08-29 17:31:57

这些变量之间在功能上有什么区别,如果有的话?

shirtjacket都是整数类型,但shirtint,是enum colour。后者是一个实现定义的整数类型,例如可以是unsigned int

例如,在gcc中,默认情况下,enum colourunsigned int

现在使用enum类型的变量有一些优势。例如,一些编译器能够检测和警告不同enum类型的混淆.另外,如果您使用enum类型的对象作为switch语句的控制表达式,一些编译器(例如,gcc-Wswitch)如果不列出所有enum常量情况,就可以发出警告。另外,调试器通常能够为enum对象值显示一些很好的符号。

票数 3
EN

Stack Overflow用户

发布于 2014-08-29 17:34:59

哪种代码更容易理解?

代码语言:javascript
运行
复制
Tshirt tee = new Tshirt();

tee.setColor(4);

代码语言:javascript
运行
复制
enum color { red, green, blue, black, pink, grey, brown };
Tshirt *tee = new Tshirt();

tee.setColor( pink );
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25573280

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档