数组怎么没越界

来源:百度知道 编辑:UC知道 时间:2024/05/27 07:36:16
这个代码在第一次循环时,数组是越界的,怎么没报错呢?
#include<iostream>
using namespace std;
void main()
{
int i,j;
static int a[10][10]={1};
cout<<a[0][0]<<endl;
for(i=1;i<10;i++)
{
for(j=0;j<=i;j++)
{
a[i][j]=a[i-1][j] + a[i-1][j-1];
cout<<a[i][j]<<" ";
}
cout<<endl;}
}

楼上11级的哥们大意了啊!
是a[i][j]=a[i-1][j] + a[i-1][j-1];越界了,j=0时,a[i-1][j-1]越界。
VC++编辑器,对数组越界不报错。你直接写个赋值语句如:a[10][1]=1;编辑器同样不会报错。

for(i=1;i<10;i++) 循环执行时,每次循环中i的值分别是1、2、3……9,因为控制条件是i<10,所以当i=10时不执行程序的,没有越界。