我们可以在c中对类型变量进行类型转换

Ami*_*mar 3 c

我在采访中被问到这个问题:

是否可以将枚举变量强制转换为其他类型?

我真的不知道该怎么回答.

lin*_*r27 6

是.在C enum类型只是int在幕后.将它们按照你想要的任何方式进行操纵.

enum cardsuit {
   Clubs = 1,
   Diamonds,
   Hearts,
   Spades
}; 
enum cardsuit trump = Diamonds;
int d = (int)trump;  /* 'd' would be 2 */
Run Code Online (Sandbox Code Playgroud)

  • @Christoph - 完全是关于积分类型的陈述的观点.进一步详细说明,我当前的编译器(C99,嵌入式RTOS,ARM9)提供了一个--short-enum构建设置,它将生成一个字节或两个字节的枚举(而不是最直接映射到一个字节的四字节枚举) INT). (3认同)
  • 枚举不是*总是*在C中的整数.但是,假设它们是基于整数类型构建是合理的. (2认同)
  • @ Throwback1986:C99第6.7.2.2节§2:“定义枚举常量值的表达式应为整数常量表达式,其值可表示为int。” 编译器可以自由使用其他整数类型来表示枚举,但是转换为`int`总是无损的 (2认同)