0

我一直在玩 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 代替?或者我可以吗?

谢谢。

4

3 回答 3

2

允许您在和enum之间为您的值使用英文名称。对于下一个开发人员来说,它更漂亮、更容易理解0n-1

int myColor = Colors::WHITE;

int myColor = 0; // What color is this? I don't know
于 2013-03-02T10:03:29.240 回答
2

但是为什么我必须使用枚举的颜色名称来声明一个数组?为什么我不能使用 int 代替?或者我可以吗?

你可以:

enum {
    WHITE,
    BLACK
};

int arr[3];
arr[0] = WHITE;
于 2013-03-02T10:04:20.497 回答
2

但是为什么我必须使用枚举的颜色名称来声明一个数组?为什么我不能使用 int 代替?或者我可以吗?

是的,您可以将变量声明为 anint而不是将其声明为 a Colors,但使用 an 的全部意义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
于 2013-03-02T10:11:55.833 回答