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

Des*_*tor 2 d primitive-types value-initialization

考虑以下程序(请参阅此处的实时演示)

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

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

Col*_*Two 7

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

所以你甚至不需要为默认初始化分配一个变量; 只是声明它很好.int i;在设置为其他内容之前,它将始终为零.

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