2

考虑以下程序(在此处查看现场演示)

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

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

4

2 回答 2

7

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

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

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

于 2015-10-24T18:50:37.903 回答
2

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

于 2015-10-24T17:36:02.053 回答