考虑以下计划(参见实时演示here)
import std.stdio;
void main()
{
int i=int();
writefln("i is %d",i);
}
在像C ++这样的语言中,语句 int i=int();
称为值初始化。对于 int
类型,值初始化基本上最终为零初始化。如果我没有错,C ++标准保证它总是给我零。但D语言是否包含像C ++一样的值初始化功能?是否必须在所有D编译器上给我一个零点&在我编译和编译的每个环境中在D程序之上运行?
答案 0 :(得分:7)
当在D中声明变量时,它始终设置为其默认初始化程序',可以手动访问T.init
,其中T
是类型(例如, int.init
)。整数类型的默认初始值设定项为0
,布尔值为false
,浮点数为NaN
。
所以你甚至不需要为默认初始化分配一个变量;只是声明它很好。 <{1}}将始终为零,直到设置为其他内容。
通过将变量初始化为int i;
,可以显式禁用默认初始化;例如,void
。
答案 1 :(得分:2)
在D中,任何值都被初始化,它将始终给出一个整数的默认值:0。它比C ++更安全,只有在可以免费完成初始化时才会发生初始化。