我刚刚使用C ++中的枚举,我仍然无法理解这两个例子:
enum Colors {
WHITE, BLACK, RED
};
Colors colors[3];
colors[0] = WHITE; // it's OK
和
enum Colors {
WHITE, BLACK, RED
};
int colors[3];
colors[0] = WHITE; // it's OK
我知道枚举的元素从0到n-1计数,所以它们都有值。但为什么我必须使用颜色名称的枚举来声明一个数组?为什么我不能使用int代替?或者我可以吗?
感谢。
答案 0 :(得分:2)
enum
允许您在0
和n-1
之间为您的值使用英文名称。对于下一个开发人员来说,它更漂亮,更容易理解
int myColor = Colors::WHITE;
大于
int myColor = 0; // What color is this? I don't know
答案 1 :(得分:2)
但为什么我必须使用枚举的颜色名称来声明一个数组?为什么我不能使用int代替?或者我可以吗?
你可以:
enum {
WHITE,
BLACK
};
int arr[3];
arr[0] = WHITE;
答案 2 :(得分:2)
但为什么我必须使用枚举的颜色名称来声明一个数组?为什么我不能使用int代替?或者我可以吗?
是的,您可以将变量声明为int
,而不是将其声明为Colors
,但使用enum
的重点是两者开发人员和编译器可以判断可接受的值是有限的。更重要的是,编译器可以使用此信息来发布诊断并帮助开发人员避免错误:
int color1 = WHITE; // OK
int color1 = 0; // OK, no diagnostic, but what does 0 mean ?
Colors color2 = WHITE; // OK
Colors color2 = 0; // compilation warning or error