诠释我=诠释(); D 会发生什么?

int i=int(); what happens in D?

考虑以下程序(查看现场演示 here

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

在像 C++ 这样的语言中,语句 int i=int(); 被称为值初始化。对于类型int,值初始化基本上都是零初始化。如果我没记错的话,C++ 标准保证它总是给我零。但是 D 语言是否像我们在 C++ 中那样具有像值初始化这样的特性?在所有 D 编译器和我编译 & 运行 以上 D 程序的每个环境中,它是否一定给我一个零?

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

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

所以你甚至不需要为默认初始化分配一个变量;只是宣布它很好。 int i; 将始终为零,直到设置为其他内容。

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