我明白int x{};
是一种默认初始化,但是它与编写int x = 0;
完全一样吗?int x {};和int x = 0;?
回答
结果在这种情况下是一样的。
int x{};
是一种默认初始化的
不完全是。见default initialization。
int x{};
是value initialization(因为C++ 11),
这是当一个变量与一个空的初始构造执行初始化。
和值初始化的在这种情况下的影响(即,既不使用类型也不阵列型)为:
4)否则,该对象是零初始化。
最后的zero initialization在这种情况下,效果是:
如果T是一个标量类型,对象的初始值是积分 恒定零显式转换为T.
另一方面,int x = 0;
是copy initialization; x
使用值0
初始化。
正如@PaulR所提到的,仅有int x{};
仅支持C++ 11,而int x = 0
没有这样的限制。
在这种情况下它们是相同的。 int x{}
将以与static int x
相同的方式初始化x
;即归零。也就是说,我发现int x = 0
更清晰,它的优点是它可以与较早的C++标准一起使用。
它们都是完全相同的东西。他们都将被初始化为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;
}
OUTPUT:
y: 0
x: 0
请考虑通过添加相关引用来改进此答案,这些引用说明此代码的输出遵循标准,而不是由[未定义行为](https://en.wikipedia.org/wiki/Undefined_behavior)引起的。 –
有区别: INT X = 1.888;将与x一起工作1.稍后很多麻烦。所有专业人员都有时会遇到他们或他人的代码。
但 INT X {1.888};不会编译和保存麻烦。
有一个相关的问题在https://stackoverflow.com/questions/20603403/c11-variable-initialization-and-declaration – Jason
- 1. int * x []和int(* x)[]之间的区别?
- 2. int [] x;有什么区别?和int x [];?
- 3. MySQL INT(x)与INT(x + 1)
- 4. 什么是qsort void * x和*(int *)x?
- 5. OS X C中int(*)(...)和int(^)(...)的区别?
- 6. 传递(int x)和(const int x)之间的区别
- 7. C++:int * x [5]和int(* x)[5]之间有什么区别?
- 8. const int&x = 4和const int x = 4之间的区别
- 9. (重复)'public int x'之间的区别和'public int x {get;组; }
- 10. C中`extern int(x)[]`和`extern int x []`有什么区别?
- 11. 为什么Java允许int x []和int [] x?
- 12. 递归函数int sum(int * x,int n)?
- 13. Convert.ToInt32(x)与(int)相同x
- 14. *(int *)0 ='X'产生什么信号;
- 15. Java - 转换“this [int x,int y]”
- 16. if int(x)== int(q):NameError:name'q'is not defined
- 17. C预处理器分裂 “INT X” 转换成int&X
- 18. 变量赋值:INT X = X = 1
- 19. int x = 3. x会缓存吗?
- 20. 将DataRow.ItemArray [x]转换为int
- 21. 印刷INT **中的x GDB
- 22. insertBefore(int x,Link l)LinkedList Java
- 23. int x = time(NULL); => SEGFAULT?
- 24. 查找int x的值
- 25. 将Color设置为用于setRGB(int x,int y,int rgb)方法的int值? - Java
- 26. 地图对象保存点(int x,int y)和颜色
- 27. 是否如果x/100 = Int(x/100)然后ActiveWorkbook.Save OR如果x/100 = Int(x)那么ActiveWorkbook.save?
- 28. “F(5)”和“int x; F(x)»来调用不同的函数?
- 29. int(x)和mediumint(x)之间的区别 - MySQL
- 30. 运算符x ++;和++ x;对于int.哪个更快?为什么?
在C++ 11及更高版本中仅仅支持'int x {}'是不是真的?对于那些需要编写可移植的代码的人来说,使用旧的C++标准可能不会有这样的情况:喜欢'int x = 0'? –
@PaulR作为它们之间的差异添加。 – songyuanyao