关于for循环问题。深奥,急。。

来源:百度知道 编辑:UC知道 时间:2024/06/17 03:36:26
这是我在编程中遇到的问题,先看这段代码

for(m=0;m<5;m++)
{
if(num[i][j]<num[i][m])
break;
}
这段语句在实际执行时m并没有循环。

再看这段代码

for(m=0;m<5;m++)
{
x=num[i][j]-num[i][m];
if(x<0)
break;
}

这段语句执行时m就会循环。不知道为什么。时因为变量在逻辑判断语句中就不会循环么?可书上也没这么说啊。不明白。指点下吧。
没事了。解决了。我自己调试的问题。。。。这两个是等价的。跳出循环的条件我还是知道的,这种错误不会犯的。。

老兄,你的代码我猜测是出现了这样的问题就是:num[i][j]小于num[i][0]。
for(m=0;m<5;m++)
{
if(num[i][j]<num[i][m])
break;
}
这段代码的意思你知道:只要num[i][j]<num[i][0]为真就是会执行break; 语句跳出循环。这里表达是返回的是1,因此跳出循环没有执行,for 的第三个表达式m++.
而第二段:
for(m=0;m<5;m++)
{
x=num[i][j]-num[i][m];
if(x<0)
break;
}
是这样的 x=num[i][j]-num[i][m]; 是一个小于零的数,那么这个就是X<0是成立的那么说同样是要执行break;语句。这样看来这根本就是不可能的。所以老兄你别搞笑行不行。要不就是你的编译器出问题了。

请给出全部的代码。这样看,不知道num数组的值,也不知道m和j的值,不好判断是哪里的错误。

请给多点代码吧……

多半是类型问题, 比如x为unsigned类型,则x<0永远不成立, 即便num[i][j]<num[i][m]成立

请给出x的类型和num元素的类型.