转换和枚举类型

由于枚举类型是整型,所有枚举数可以转换为另一个整型将整数提升。 请看以下示例:

// enumerated_types.cpp
// compile with: /EHsc
#include <iostream>
using namespace std;

enum Days
{
    Sunday,
    Monday,
    Tuesday,
    Wednesday,
    Thursday,
    Friday,
    Saturday
};

int  i;
Days d = Thursday;
int main()
{
   i = d;    // Converted by integral promotion.
   cout << "i = " << i << "\n";
}

bd77ckhw.collapse_all(zh-cn,VS.110).gifOutput

i = 4

但是,无法从任何整型隐式转换为枚举类型。 因此 (继续前面的示例),下面的语句错误:

d = 6;    // Erroneous attempt to set d to Saturday.

分配如下所示,其中隐式转换不存在,必须使用将执行转换:

d = (Days)6;    // Explicit cast-style conversion to type Days.
d = Days( 4 );  // Explicit function-style conversion to type Days.

前面的示例显示与枚举数匹配值的转换。 不会防止您将值与一个枚举数不相符的结构。 例如:

d = Days( 967 );

这些此类转换能够正常工作。 但是,无法保证则结果的值将为一个枚举器。 此外,在中,如果枚举数的大小太小而无法表示转换的值,存储的值可能不是预期。

请参见

参考

C++枚举声明