int i = int(); D会发生什么?

时间:2015-10-24 17:30:44

标签: d primitive-types value-initialization

考虑以下计划(参见实时演示here

import std.stdio;
void main()
{
   int i=int();
   writefln("i is %d",i);
}

在像C ++这样的语言中,语句 int i=int(); 称为值初始化。对于 int 类型,值初始化基本上最终为零初始化。如果我没有错,C ++标准保证它总是给我零。但D语言是否包含像C ++一样的值初始化功能?是否必须在所有D编译器上给我一个零点&在我编译和编译的每个环境中在D程序之上运行?

2 个答案:

答案 0 :(得分:7)

当在D中声明变量时,它始终设置为其默认初始化程序',可以手动访问T.init,其中T是类型(例如, int.init)。整数类型的默认初始值设定项为0,布尔值为false,浮点数为NaN

所以你甚至不需要为默认初始化分配一个变量;只是声明它很好。 <{1}}将始终为零,直到设置为其他内容。

通过将变量初始化为int i;,可以显式禁用默认初始化;例如,void

答案 1 :(得分:2)

在D中,任何值都被初始化,它将始终给出一个整数的默认值:0。它比C ++更安全,只有在可以免费完成初始化时才会发生初始化。