繁体   English   中英

int x{}; 之间有区别吗? 和 int x = 0;?

[英]Is there a difference between int x{}; and int x = 0;?

我明白int x{}; 是一种默认初始化,但它是否与编写int x = 0;完全相同int x = 0; ?

在这种情况下,结果是一样的。

int x{}; 是一种默认初始化

不完全是。 请参阅默认初始化

int x{}; 值初始化(C++11 起),

这是使用空初始化程序构造变量时执行的初始化。

在这种情况下值初始化的效果(即既不是类类型也不是数组类型)是:

4) 否则,对象是零初始化的

最后,在这种情况下 零初始化的效果是:

如果 T 是标量类型,则对象的初始值是显式转换为 T 的整数常量零

另一方面, int x = 0; 复制初始化 x用值0初始化。

正如@PaulR 提到的,有一个区别是int x{}; 仅从 c++11 支持,而int x = 0没有这样的限制。

在这种情况下,它们是相同的。 int x{}将以与static int x相同的方式初始化x 即为零。 也就是说,我发现int x = 0更清晰,它的好处是它适用于较旧的 C++ 标准。

有区别: int x=1.888; 将使用 x 作为 1。以后会遇到很多麻烦。所有专业人士都曾在他们或其他人的代码中遇到过。

int x{1.888}; 不会编译并省事。

它们是完全相同的东西。 它们都将被初始化为0

#include <iostream>
#include <string>
using namespace std;

int main()
{
  int y{};
  int x = 0;

  cout << "y: " << y << endl;
  cout << "x: " << x << endl;

  return 0;
}

输出:

y: 0
x: 0

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM