在c ++中需要枚举类型转换说明

时间:2015-02-12 12:23:13

标签: c++ enums

以下是我的测试代码

#include "test.h"
#include <iostream>

typedef enum{
    A = 0,
    B
 } testEnum;

int main()
{
    testEnum e = static_cast<testEnum>(3);
    printf("My enum Value : %d\n", (int)e);
    int stop = 0;
}
程序输出是My enum Value : 3 现在在程序中,我输入编号3到enum,然后将其打印为int。我猜测这应该给出错误或垃圾值或1(作为枚举最高值)。但是输出是3.有人可以规则是什么以及它是如何工作的。谢谢!

2 个答案:

答案 0 :(得分:2)

n3376 5.2.9 / 10

  

可以将积分或枚举类型的值显式转换为   枚举类型。如果原始值为,则该值不变   在枚举值范围内(7.2)。否则,   结果值未指定(可能不在该范围内)。

答案 1 :(得分:1)

整数类型(数字)的枚举。通过类型转换,您告诉编译器您知道值是正确的但没有发生转换。您需要自己检查值/范围。

顺便说一下。它实际上给出了一个垃圾值:3