此代码的含义是什么:
using namespace std;
enum DRAM_Controller { dram_controller_maximum = 10};
void myprint(DRAM_Controller dct)
{
printf("dct value is: %d\n", dct);
}
int main ()
{
DRAM_Controller(0); //**--> What is the meaing of this**
printf("value is : %d\n", dram_controller_maximum);
printf("value is : %d\n", DRAM_Controller(1));
myprint(DRAM_Controller(0));
}
输出是: 价值是:10 价值是:1 dct值为:0
答案 0 :(得分:4)
这是从int
到DRAM_Controller
它创建一个DRAM_Controller
类型的临时表,但没有效果
答案 1 :(得分:1)
你指出的那条线,
DRAM_Controller(0);
将0
投射到DRAM_Controller
,然后忽略它。
与
具有相同的效果0;
并且同样有用。
在C ++中,任何可以符合枚举大小的整数都可以转换为该枚举
当你在枚举值上“切换案例”时,default:
案例是个好主意的原因之一。
答案 2 :(得分:1)
在这里你将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**
接下来的三行将打印转换为int的dram_controller_maximum
值。请记住,在开始时我们说它等于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
个名字"":
C直接公开枚举值的整数表示 程序员。整数和枚举值可以自由混合,全部 允许对枚举值进行算术运算。它是均匀的 枚举变量可以保存不包含的整数 表示任何枚举值。事实上,根据 语言定义,上面的代码将定义CLUBS,DIAMONDS, HEARTS和SPADES作为int类型的常量,它们只是 如果它们存储在变量中,则转换(静默)到枚举 那种类型
和
C ++具有直接从C&和C继承的枚举类型 除了枚举是一个真正的类型之外,大多数工作都是这样的 C ++,提供额外的编译时检查。
答案 3 :(得分:0)
它创建一个用给定值初始化的DRAM_Controller
类型的临时未命名对象。
第一行没有效果,因为对象在不使用其值的情况下被销毁。最后两行使用该对象初始化函数参数。