【发布时间】:2015-09-15 05:53:38
【问题描述】:
假设我有这样一堂课:
enum class Flags : char
{
FLAG_1 = 1;
FLAG_2 = 2;
FLAG_3 = 4;
FLAG_4 = 8;
};
现在我可以拥有一个具有类型标志的变量并分配一个值7 吗?我可以这样做吗:
Flags f = Flags::FLAG_1 | Flags::FLAG_2 | Flags::FLAG_3;
或
Flags f = 7;
出现这个问题是因为在枚举中我没有为7 定义值。
【问题讨论】:
-
我认为这是可能的。但是您的代码无法编译!
-
如果您之后尝试测试
Flags变量,则未定义的行为(在char之间来回转换之后)。我可以尝试在标准中为您找到它,但您应该自己做。 -
@CoffeeandCode 定义完美。
-
真的吗?它不适合我。
-
@T.C.可以肯定的是,尝试使用枚举类未定义的值来测试枚举类变量的值会受到未定义行为的影响(尽管不确定)。但是,如果您针对基础类型对其进行测试,我知道它肯定已定义。