C 中枚举类型的隐式类型转换

时间:2021-03-16 13:58:59

标签: c enums

在 C 中,有没有办法为以下联合类型声明隐式类型转换:

enum COMP { 
  LessThan, 
  Equal, 
  GreaterThan 
};

将它映射到一个整数:

enum COMP { 
  LessThan : 1, 
  Equal : 0, 
  GreaterThan : -1 
};

2 个答案:

答案 0 :(得分:6)

您拥有的是 enum,而不是 union。而且看起来您要问的是是否可以为枚举常量分配特定值。你可以这样做:

enum COMP { 
  LessThan=-1, 
  Equal=0, 
  GreaterThan=1 
};

此外,枚举被视为整数类型,因此您可以安全地与 int 进行转换。

答案 1 :(得分:2)

为了完成起见,如果值要在 1 个区间内,您只能定义第一个值:

enum COMP
{
    LessThan = -1,
    Equal, // will be 0
    GreaterThan // will be 1
};