for循环的执行顺序用如下表达式:
for(expression1;expression2;expression3) { expression4; }
执行的顺序应该是:
1)第一次循环,即初始化循环。
首先执行表达式expression1(一般为初始化语句);再执行expression2(一般为条件判断语句),判断expression1是否符合expression2的条件;如果符合,则执行expression4,否则,停止执行;最后执行expression3。
2)第N(N>=2)次循环
首先执行expression2,判断在expression3是否符合在expression2要求;如果符合,则继续执行在expression4,否则,停止执行。最后执行在expression3。如此往复,直至expression3不满足在expression2条件是为止。
总结:
总的来说,执行的顺序是一致的。先条件判断(expression2),再函数体执行(expression4),最后for执行(expression3)。往复......区别在于,条件判断的对象。第一次判断时,对象为初始化语句(expression1),后续的判断对象为执行后的结果(expression3)。
例子:
1 #include <stdio.h>
2
3 int print1(int i,int j)
4 {
5 printf(" 执行判断条件,i=%d,j=%d
",i,j);
6 return 1;
7
8 }
9 int print2(int i)
10 {
11 printf("执行初始化i=%d
",i);
12 return 1;
13 }
14 int main()
15 {
16 int i=0,j=10;
17 for(i=0,print2(i);((print1(i,j))&&(i<j));i++,j--,printf("执行for()中的第三个语句,i=%d,j= %d
",i,j))
18 {
19 if(j==10)
20 {
21 printf("%d,%d
",i,j);
22 j--;
23 }
24 j++;
25 printf("执行for循环体中的最后一句,i=%d,j=%d
",i,j);
26 }
27 printf(" %d,%d
",i,j);
28
29 return 0;
30 }
输出结果:
执行初始化i=0
执行判断条件,i=0,j=10
0,10
执行for循环体中的最后一句,i=0,j=10
执行for()中的第三个语句,i=1,j=9
执行判断条件,i=1,j=9
执行for循环体中的最后一句,i=1,j=10
执行for()中的第三个语句,i=2,j=9
执行判断条件,i=2,j=9
执行for循环体中的最后一句,i=2,j=10
执行for()中的第三个语句,i=3,j=9
执行判断条件,i=3,j=9
执行for循环体中的最后一句,i=3,j=10
执行for()中的第三个语句,i=4,j=9
执行判断条件,i=4,j=9
执行for循环体中的最后一句,i=4,j=10
执行for()中的第三个语句,i=5,j=9
执行判断条件,i=5,j=9
执行for循环体中的最后一句,i=5,j=10
执行for()中的第三个语句,i=6,j=9
执行判断条件,i=6,j=9
执行for循环体中的最后一句,i=6,j=10
执行for()中的第三个语句,i=7,j=9
执行判断条件,i=7,j=9
执行for循环体中的最后一句,i=7,j=10
执行for()中的第三个语句,i=8,j=9
执行判断条件,i=8,j=9
执行for循环体中的最后一句,i=8,j=10
执行for()中的第三个语句,i=9,j=9
执行判断条件,i=9,j=9
9,9