考虑以下程序(参见现场演示 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 中声明一个变量时,它总是被设置为它的“默认初始化器”,它可以作为 T.init
手动访问,其中 T
是类型(例如 int.init
)。整数类型的默认初始值设定项是 0
, bool 值是 false
, float 是 NaN
。
因此您甚至不需要为默认初始化分配一个变量;只是宣布它很好。 int i;
将始终为零,直到设置为其他内容。
可以通过将变量初始化为 void
来显式禁用默认初始化;例如,int i = void;
。
关于d - 诠释我=诠释(); D 会发生什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33321183/