注册 登录
编程论坛 C++教室

求解个数组问题,看似简单,似乎不简单

and80506 发布于 2010-04-17 01:50, 333 次点击
今天碰到个问题,一直没找到问题所在。先把代码贴出来:
#include<iostream.h>
int i,j,a[2][2];
void main()
{
for(i=0;i<3;i++)
 for(j=0;j<3;j++)
 { a[i][j]=5;cout<<a[i][j]<<endl;}
}
咋看起来这段代码预期显示结果会是
5                           
5
5
5
5
5
5
5
5
不知是否是我的VC编译器问题,运行结果是
5
5
5
5
5
4358224
单步调试,发现执行到i=1,j=3后直接到i=5,j=0跳出循环了。
假如修改成a[i][j]=1;的话,执行到i=1,j=3后变成i=1;j=0,进入死循环了。
各位如果编译运行正常的话可能就是我编译器的问题了,也许还有种可能是我没找到里面隐藏着什么东西,小弟新手。
3 回复
#2
ybjx19872010-04-17 04:11
#include<iostream.h>
int i,j,a[2][2];
void main()
{
for(i=0;i<3;i++)
for(j=0;j<3;j++)

{ a[i][j]=5;cout<<a[i][j]<<endl;}
}
a[2][2]的范围是a[0][0]~a[1][1]下面for语句的i,j会等于3,从而使a[i][j]超出数组定义的范围。可以把数组定义为a[3][3].
#3
and805062010-04-17 09:22
一直以为a[2][2]范围是a[0][0]~a[2][2],看来是我基础不扎实。 上面两位多谢了。
1