C++数组的背景知识

Background knowledge on array in C++

本文关键字:知识 背景 数组 C++      更新时间:2023-10-16

我使用Clion(版本2018.02)来运行代码。这是代码:

int a[10]={0};
cout<<a[-1]<<endl;
cout<<a[10]<<endl;

经过几次测试,我发现每次a[-1]=0;但是,a[10] 的值总是在变化。我想知道为什么在 a[10] 上没有发现这种现象。换句话说,我想 a[-1] 也应该改变。

#

实际上我知道上面的那些东西是未定义的行为。

然而,在我看来,未定义的行为总是意味着它们是随机的。我所做的只是创建错误,然后看看为什么 a[-1] 总是一个特定的数字。这样我就可以知道它在内存流中是如何工作的。

多谢!!

这取决于您使用的环境。例如,在 vs13 中,我在调试模式下为 a[-1]a[10]获得了相同的垃圾值,但在发布模式下,我获得了 a[-1] 的垃圾值和a[10]0垃圾值。

您可以确定的一件事是,在任何情况下,在这些情况下,您都会有未定义的行为,并且值应始终被确定为垃圾。