我从int x[3]得到的一个非常奇怪的输出;
A very bizarre output I got from int x[3];
所以我在C++中输入了下面的代码
#include <iostream>
using namespace std;
int main() {
int x[3];
cout << x[1] << endl;
return 0;
}
当我运行它时,它会打印出 -272632344 而不是 0。有什么原因吗?
在默认初始化中,
如果 T 是数组类型,则数组的每个元素都是默认初始化的;
然后
否则,不执行任何操作:具有自动存储持续时间的对象(及其子对象(初始化为不确定值。
尝试打印出这些不确定的值会导致未定义的行为。
如果您希望将所有元素初始化为零,则可能需要聚合初始化,例如
int foo [3] = {}; // all the elements will be value-initialized to zero
int foo [3] {}; // same as above
数组未初始化,它获取内存中当前随机值。
您可以像这样初始化数组:
int foo [3] = { 0, 0, 0 };
另请参阅此处的"初始化数组"部分:
默认情况下,本地作用域的常规数组(例如,在函数中声明的数组(保持未初始化状态。这意味着其任何元素都不会设置为任何特定值;在声明数组时,它们的内容是不确定的。
相关文章:
- 我从int x[3]得到的一个非常奇怪的输出;
- 一个非常简单的win32套接字代码,但工作错误
- 超过CPU时间限制:当MPI_Sent一个非常大的int*时
- 无法使用crfsuite的C++ API编译一个非常简单的Tagger示例
- C++中一个非常简单的枚举类错误
- 我在内存泄漏和字符串方面遇到了一个非常奇怪的问题
- 我正在写一个非常简单的字母评分系统,if语句是最有效的吗?
- 我刚刚创建了一个非常快速的素数排序方法.如何改进?
- 在64位系统上创建一个非常大的数组的缺点是什么
- (c++)代码中一个非常奇怪的问题
- 打印出一个非常小的浮点数
- C++:C字符串、指针和一个非常有趣的while循环
- 在 matlab 中编写一个非常基本的 mex 函数
- 在C 中编写一个非常简单的事件类
- 如何取一个非常大的数的根
- 在使用Qt Creator创建一个非常简单的项目时,在Qt中遇到"segmentation fault"
- 使用C++计算一个非常大的幂
- 一个非常弱的引用(无法转换为共享)
- 在一个非常简单的程序中检测到内存泄漏.怎么办
- 非虚拟接口?(需要一个非常高性能的低级抽象)