在这里,您将 a 分配dram_controller_maximum
给 10,这仅表示每次编写
something = dram_controller_maximum
时,您的意思是something = 10
:
enum DRAM_Controller { dram_controller_maximum = 10};
对于下面的函数,如果你传递一个数字,它只会打印它。如果你传递一个DRAM_Controller
变量,它将评估它的值(一个数字,记住),并打印它。
void myprint(DRAM_Controller dct)
{
printf("dct value is: %d\n", dct);
}
以下行只是将整数 ( 0
) 转换为DRAM_Controller
。仅这一行就没什么用了:
DRAM_Controller(0); //**--> What is the meaing of this**
接下来的三行将打印dram_controller_maximum
转换为 int 的值。请记住,一开始我们说它等于 10,所以这只会打印 10。所有三行都做同样的事情:它们尝试将 DRAM_Controller 类型的值解释为 int 并打印它:
printf("value is : %d\n", dram_controller_maximum);
printf("value is : %d\n", DRAM_Controller(1));
myprint(DRAM_Controller(0));
基本上, anenum
只是一堆int
具有“名称”的 s:
C 将枚举值的整数表示直接暴露给程序员。整数和枚举值可以自由混合,并且允许对枚举值进行所有算术运算。枚举变量甚至可以保存一个不代表任何枚举值的整数。事实上,根据语言定义,上面的代码会将 CLUBS、DIAMONDS、HEARTS 和 SPADES 定义为 int 类型的常量,只有将它们存储在该类型的变量中才会(默默地)转换为 enum cardsuit
和
C++ 具有直接从 C 继承的枚举类型,它们的工作方式大多类似,除了枚举是 C++ 中的真实类型,提供额外的编译时检查。
来自维基。