多维数组的值为什么不能在if( )中作表达式进行判断???

来源:百度知道 编辑:UC知道 时间:2024/06/06 09:52:09
它对这个if似乎透明;
#include"stdio.h"
main()
{
int i=0,j=0,sum=0,n=0;static int a[60][3];
for(i=0;i<60;i++)
{
for(j=0;j<3;j++)
scanf("%d",&a[i][j]);
if(a[i][j]==45)
break;
}
printf("45646456");
}
本来想输三次45后应该退出循环,但是不能.如果把a[i][j]改为sum又行了.
那个break是用于第一个for的,跟第二个for没关系啊,况且改为SUM又行?
二楼的方法说明多维数组的值可以在IF中判断,但为什么我这个就不行呢?

你改成下面的代码试试看:一个break;只能挑出一层循环的,如果要想跳出两个嵌套的循环,你就得用goto

#include"stdio.h"
main()
{
int i=0,j=0,sum=0,n=0;
static int a[60][3];

for(i=0;i<60;i++)
{
for(j=0;j<3;j++) {
scanf("%d",&a[i][j]);
if(a[i][j]==45)
break; /* goto out; */
}
}
out:
printf("45646456");
}

哦,原来你是这个意思,那就错的离谱了。你的内循环退出的时候,j == 3, a[i][j]其实就是a[i][3],数组访问越界了,a[i][2]是低维数组的最后一个元素!!

break退出的是里面的一个循环啊