c – 为什么我不能分配错误的枚举元素,但可以与错误的枚举元素进行比较?

前端之家收集整理的这篇文章主要介绍了c – 为什么我不能分配错误的枚举元素,但可以与错误的枚举元素进行比较?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
使用以下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编程语言)

猜你在找的C&C++相关文章