创建一个enum类型的变量有什么好处?我知道如何定义枚举类型和变量--但是,我不太明白它的优点?
#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类型的值。
上面的代码提供了以下输出:
50
5这些变量之间在功能上有什么区别,如果有的话?
发布于 2014-08-29 17:31:31
enum只是赋予常量符号值的一种方式;常量只是整数,与定义相比,它有几个优点:如果是连续的,则自动创建值,而enum则服从块作用域。它还告诉其他程序员,除了变量之外,您只接受这些值。调试器可以显示符号名,这可能会有所帮助,而不仅仅是显示原始值。
发布于 2014-08-29 17:31:57
这些变量之间在功能上有什么区别,如果有的话?
shirt和jacket都是整数类型,但shirt是int,是enum colour。后者是一个实现定义的整数类型,例如可以是unsigned int。
例如,在gcc中,默认情况下,enum colour是unsigned int。
现在使用enum类型的变量有一些优势。例如,一些编译器能够检测和警告不同enum类型的混淆.另外,如果您使用enum类型的对象作为switch语句的控制表达式,一些编译器(例如,gcc和-Wswitch)如果不列出所有enum常量情况,就可以发出警告。另外,调试器通常能够为enum对象值显示一些很好的符号。
发布于 2014-08-29 17:34:59
哪种代码更容易理解?
Tshirt tee = new Tshirt();
tee.setColor(4);或
enum color { red, green, blue, black, pink, grey, brown };
Tshirt *tee = new Tshirt();
tee.setColor( pink );https://stackoverflow.com/questions/25573280
复制相似问题