使用以下C定义:
enum EnumA { EA_Element = 1 }; enum EnumB { EB_Element = 10 };
以下代码将无法编译,只有有意义:
EnumA variable; variable = EB_Element; // won't compile
但以下代码确实编译:
EnumA variable = EA_Element; if( variable == EB_Element ) { //will compile }
虽然它没有任何意义 – 比较不同的枚举,这样的代码可能是错误的.
为什么这些看似相同的情况在C中的处理方式不同?
解决方法
它将编译,因为“默认情况下,枚举将转换为整数以进行算术运算.” (在:C编程语言)