在这里,您分配一个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));
基本上,enum
只是int
秒的一束具有“名称”:
ç暴露枚举值的整数表示直接 程序员。整数和枚举值可以自由混合,并且所有枚举值的算术运算都是允许的。它甚至 可能枚举变量来保存不 的整数表示任何枚举值的。实际上,根据 的语言定义,上面的代码将定义CLUBS,DIAMONDS, HEARTS和SPADES作为int类型的常量,如果将它们存储在变量 中,那么只会将 转换(静默)为enum cardsuit这种类型的
和
C++有直接从C'S和 工作大多喜欢这些继承,但枚举是 C++真正的类型枚举类型,提供额外的编译时间检查。
from wiki.
谢谢你这么多的解释。我知道铸造的东西是:(unsigned int *)0xAABBCCDD;但没有遇到这样的事情。是什么特定于C++ – user1554526 2012-07-27 04:39:25
好吧,找到答案:http://stackoverflow.com/questions/32168/c-cast-syntax-styles – user1554526 2012-07-27 04:45:23