索引超出数组界限

yuyu46569 2010-09-27 10:37:41
int startnum = 0;
int endnum =0;
int middepth =3059;
double[] mydepth = {0.0};

for(int t1 = startnum; t1 <= endnum; t1++)
{
if(mydepth[t1} <= middepth && mydepth[t1 +1} >= middepth) //mydepth[t1+1}索引超出数组界限
{
////////////////////
////////////////////
}
}
else
{
if(mydepth[t1} <= middepth && mydepth[t1 +1} >= middepth)//这个地方倒不报错
{
////////////////////
////////////////////
}
}
...全文
91 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
yuyu46569 2010-09-27
  • 打赏
  • 举报
回复
哦,我明白了 谢谢各位
这是以前公司走了的人写的,老板说以前他们用过,是可以正常运行的 所以我就贴上来问问
Lemon2050 2010-09-27
  • 打赏
  • 举报
回复
其实并非不报错,只是因为执行了if后,发现错误后,就不再去ELSE中编译的,编译并非一次行发现所有错误,如果发现了block的重大的错误,将忽略之后的错误。你可以把代码修改成以下这样,再进行调试,那你就会发现问题了:
int startnum = 0;
int endnum =0;
int middepth =3059;
double[] mydepth = {0.0};

for(int t1 = startnum; t1 <= endnum; t1++)
{
if(1==2)
{
////////////////////
////////////////////
}
}
else
{
if(mydepth[t1} <= middepth && mydepth[t1 +1} >= middepth)//这个地方倒不报错
{
////////////////////
////////////////////
}
}
Olive_Guo 2010-09-27
  • 打赏
  • 举报
回复
[Quote=引用楼主 yuyu46569 的回复:]

double[] mydepth = {0.0}; 这里的mydepth 长度只有1

mydepth[t1 +1} 这里 t1=0的时候,mydepth[1]就溢出啦。。。
[/Quote]

明白?
terry 2010-09-27
  • 打赏
  • 举报
回复
[Quote=引用楼主 yuyu46569 的回复:]
if(mydepth[t1} <= middepth && mydepth[t1 +1} >= middepth) //mydepth[t1+1}索引超出数组界限
[/Quote]

当t1 = endnum 时,t1 + 1 > endnum,必然出错。

[Quote=引用楼主 yuyu46569 的回复:]
if(mydepth[t1} <= middepth && mydepth[t1 +1} >= middepth)//这个地方倒不报错
[/Quote]

当t1 = endnum 时,上面一个if语句都没执行成功,else里面的语句必然没执行到。
bloodish 2010-09-27
  • 打赏
  • 举报
回复
你这个mydepth一维数组,就放了一个double,数组长度是1,
按下标访问Index>0就肯定报数组越界异常.
这种问题,自己想想就该明白.

111,098

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧