如何将'枚举'值存储在C语言中?

sha*_*med 1 c enums

我知道'enum'数据类型是用户定义的数据类型,'enum'变量是'int'的大小.

  1. 上面的'标识符'是一组常量值,它们具有常量值的别名,这些值如何存储在内存中?我的意思是如何存储'value1',即'0','value2'存储即'20','value3'存储即'7000','value4'存储,即'1234567'存储在存储器中.
  2. 我知道'enum_variable'的大小为32位,不是强制性的.但这里的混淆部分是32位[if]如何共同存储所有'枚举'值?

    enum identifier
    {
      value1 = 0, value2 = 20, value3 = 7000, value4 = 1234567
    } enum_variable;
    
    printf("%d\n",sizeof(enum_variable));
    
    Run Code Online (Sandbox Code Playgroud)

Som*_*ude 10

枚举"值"根本不存储,因为它们是编译时命名的常量.

编译器只是简单地使用枚举符号来交换它的值.

此外,枚举值的类型是类型int,因此确切的大小可以不同.但正因为如此,枚举值可以是与a相同范围内的任何值int.

有关更多信息,请参阅此枚举参考.