创建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
这些变量之间的功能差异是什么?
答案 0 :(得分:3)
这些变量之间的功能差异是什么?
shirt
和jacket
都是整数类型,但shirt
是int
且enum colour
。后者是一个实现定义的整数类型,例如可以是unsigned int
。
例如,在gcc
中,默认enum colour
为unsigned int
。
现在使用enum
类型的变量有一些优势。例如,一些编译器能够检测并警告不同enum
类型的混淆。此外,如果您使用enum
类型的对象作为switch
语句的控制表达式,则某些编译器(例如,gcc
与-Wswitch
)能够发出警告,如果您不要列出所有enum
个常数案例。此外,调试器通常能够为enum
对象值显示一些漂亮的符号。
答案 1 :(得分:2)
enum
只是一种赋予常数符号值的方法;常数只是整数&#39;与定义相比,这有几个优点:如果连续,则自动创建值,并且enum
服从块范围。它还告诉其他程序员,除了变量之外,你只能接受这些值。调试器可以显示符号名称,这可能有帮助,而不是仅显示原始值。
答案 2 :(得分:1)
哪种代码更容易理解?
Tshirt tee = new Tshirt();
tee.setColor(4);
或
enum color { red, green, blue, black, pink, grey, brown };
Tshirt *tee = new Tshirt();
tee.setColor( pink );
答案 3 :(得分:0)
其中一个优点是,它提高了程序的可读性。
例如:
enum colour{white, red=2, green, blue, yellow, black} jacket;
int shirt_price[10];
shirt_price[red] = 50;
shirt_price[green] = 100;
shirt_price[black] = 500;
现在你不需要记住索引,只需使用枚举变量。