c++ - int[ ] 中未分配的值

标签 c++ visual-c++

想知道在 C++ 中,int[] 中未赋值整数的值通常是多少。

例子

int arr[5];
arr[1]=2;
arr[3]=4;
for(int i=0;i<5;i++)
{
  cout <<arr[i] <<endl;
}

打印

-858993460
2
-858993460
4
-858993460

我们知道数组将是 {?,2,?,4,?} ,在哪里?未知。

“?”会是什么?通常是?

当我测试时,我总是得到负值。 我可以假设在 C++ 中整数数组中未分配的元素总是小于或等于零吗?

如果我错了请纠正我。当我学习 Java 时,数组中未分配的元素将产生 null。

最佳答案

形式上,在大多数情况下,尝试读取未初始化的值会导致未定义的行为。因此,从形式上讲,关于实际值的问题是没有实际意义的:您甚至不能直接查看该值。

实际上,C 和 C++ 中未初始化的值是不可预测的。最重要的是,它们不应该是稳定的,这意味着多次读取相同的未初始化值并不能保证读取相同的值。

如果你需要一个预初始化的本地数组,用显式初始化器声明它

int arr[5] = {};

上面保证用整数零填充数组。

关于c++ - int[ ] 中未分配的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17828567/

相关文章:

c++ - 如何在 .NET Core 项目中添加 C++ 库

ios - 如何让 Visual Studio 显示 iOS Xcode .m 文件的格式化颜色

C++,如何创建和绘制二叉树然后在预购中遍历它

c++ - 在 Linux 中使用 C++ 在给定路径创建文件

c++ - C++0x 的哪些功能肯定会保留(如果有的话)?

c++ - 注释函数的内容,但保持对函数的调用不变。编译器是否发现不编译函数?

c++ - 如何在我的 C++ 源代码中查找(并替换)所有旧的 C 样式数据类型转换?

c++ - 像素着色器 | Directx 9 |使用像素着色器的索引图像 |如何使用 2 个纹理,第一个纹理作为图像,第二个作为索引图像

visual-c++ - VC++中的内存分配

c++ - 为什么某些编译器拒绝作为指针传递的匿名对象?