以下是我的测试代码
#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.有人可以规则是什么以及它是如何工作的。谢谢!
答案 0 :(得分:2)
n3376 5.2.9 / 10
可以将积分或枚举类型的值显式转换为 枚举类型。如果原始值为,则该值不变 在枚举值范围内(7.2)。否则, 结果值未指定(可能不在该范围内)。
答案 1 :(得分:1)
整数类型(数字)的枚举。通过类型转换,您告诉编译器您知道值是正确的但没有发生转换。您需要自己检查值/范围。
顺便说一下。它实际上给出了一个垃圾值:3