【发布时间】:2017-06-29 23:47:38
【问题描述】:
运行该程序时,如果n 的值设置为10,它将打印数组a 的索引以及从a[0] 到a[9] 的存储值。但是,如果我将 n 的值设置为超过 10,那么它只会打印数组 a 从 a[0] 到 a[5] 的索引及其存储的值。有人可以向我解释为什么会这样吗?
#include <iostream>
using namespace std;
int main()
{
int a[10];
int i, n=11;
for(i=0; i<n; i++) {
a[i]= 5;
}
cout<<"The array is: \n";
for(i=0; i<n; i++)
{
cout<<"a["<<i<<"] = "<<a[i]<<endl;
}
return 0;
}
【问题讨论】:
-
@PaulR 发布的代码是展示问题的完整示例。 . .在 OP 使用的任何编译器上。但是从代码中问题就很清楚了。
-
因为您使用的是 C++14,所以请查看基于范围的 for 和 std::array。访问越界索引时,后者可能会在调试模式下提供额外的错误处理。
-
@PaulR 哦,我明白了,你在悬疑。即使问题表明当您将 n 从 10 更改为大于 10 的值时会出现问题,并且进行/读取的更改是微不足道的,但您希望发布的代码恰好是触发问题的版本。 . .给你:ideone.com/sqXos6
-
@PaulR 这个问题很清楚。代码在 n 10 时爆炸。我做了一个应该让你满意的编辑。编辑:知道你可能会挑剔,n = 0。
-
@iheanyi:感谢您帮助改进问题。我现在也刚刚清理了文本,以便其他人更容易理解。