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

标签 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 程序之上编译和运行的每个环境中,它是否一定给我一个零?

最佳答案

当在 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/

相关文章:

unicode - D语言: How to print Unicode characters to the console?

mysql - SQL查询无法处理引号

java - 在 hibernate 映射中使用包装器整数类或 int 原语

JavaScript 原始类型和对应的对象

c++ - 为什么在已删除的默认构造函数旁边定义一个空拷贝构造函数会使空列表的值初始化失败?

d - 如何声明 extern ("C") const 函数?

d - D中的存储类是什么?

java - 将 BitSet 设置为原始类型?

C++ 值初始化自定义容器的项目

c++ - 获取默认初始化(非值/零初始化)的 POD 作为右值