for 与if的嵌套问题

来源:百度知道 编辑:UC知道 时间:2024/05/14 18:32:00
(1)for(i=0;i<n;i++)
__for(j=0;j<n;j++)
____if(A)
______B;
______C;

(2)for(i=0;i<n;i++)
_______for(j=0;j<n;j++)
_________if(A) D;
___________else_B;
_________C;

(3)for(i=0;i<n;i++)
_____for(j=0;j<n;j++)
_______if(A) D;
_______if (B) E;
_______C;

(3)for(i=0;i<n;i++)
__for(j=0;j<n;j++)
____{if(A) D;
____if (B) E;}
______C;

这些循环,当第一个if条件为假时,分别是执行是执行条件C还是i++还是j++还是别的?
最好能再解释解释~
最后一个改成(4),那(3)内的循环的的第二个if什么时候执行?是在for(j=0;j<n;j++)内,还是for(i=0;i<n;i++)内,还是两个完成后,再执行?
(4)中是for(j=0;j<n;j++)内,两个if分别独立执行?

你首先把格式按层次写好就能理解了
(1):
for(i=0;i<n;i++)
____for(j=0;j<n;j++)
________if(A)
____________B;
C;
因为C不在if以及for的作用域内,不论if和for怎样,C都要执行。

(2):
for(i=0;i<n;i++)
____for(j=0;j<n;j++)
________if(A)
____________D;
________else
____________B;
C;

(3):
for(i=0;i<n;i++)
____for(j=0;j<n;j++)
________if(A)
____________D;
if(B)
____E;
C;

(4):
for(i=0;i<n;i++)
____for(j=0;j<n;j++)
____{
________if(A)
____________D;
________if(B)
____________E;
____}
C;

其实和(1)一样,所有的C语句都在所有的for语句的作用域外,你可以看到,C与最外层的for循环都是并列的,而if语句都是在一个for循环里面,所以C根本不受if语句的控制。
至于A为假的时候,(1):不执行B语句;(2):执行D语句。(3):不执行D语句。(4):不执行D语句。至于if之后的其他语句执行情况,那就不属于你这个问题范围内了。就不一一列举了。
另外,因为你的语句中都没有break或者continue语句,所以循环肯定是执行完毕的,那么所有的i++和j++都会执行,至于什么时候执行,你看看相关for循环的教程就知道了。

1、执行j++,当A为假时,继续循环,就是进行j++
2、执行B,当A