繁体   English   中英

我不明白C ++中的枚举是如何工作的

[英]I can't understand how enumeration works in C++

我刚刚使用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? 可以吗

谢谢。

enum允许您使用英文名称来表示介于0n-1之间的值。 对于下一个开发人员来说,这更漂亮,也可以理解

int myColor = Colors::WHITE;

int myColor = 0; // What color is this? I don't know

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

您可以:

enum {
    WHITE,
    BLACK
};

int arr[3];
arr[0] = WHITE;

但是,为什么我必须使用颜色的枚举名称来声明一个数组? 为什么我不能使用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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM