20201027-成信大-C语言程序设计-20201学期《C语言程序设计B》C-关于for的执行顺序
普通的一个for循环,看一下过程
先举一个简单的例子
for(int i=0;i<10;i++){
//循环体
}
执行数序是:
- i=0 初始化初值
- i<10 进行判断,如果条件为真,则继续执行
为假,直接退出循环,执行之后的语句 - 执行循环体代码
- i++ 变量i自增
- 回到第2步
分析
- 初始化只执行一次,永远只有一次
- 判断每一次都会执行,包括最后退出循环的那一次
- 循环体只有在判断为真时,执行
- i++,即控制循环的方向的语句,在循环体执行完成后执行
小结一下
for(条件①;条件②;条件③){
循环体④
}
执行顺序如下:
①②④③ ②④③ ②④③…②④③… ②④③ ②结束
实例讨论
/*
总结一下:
for(条件①;条件②;条件③){
循环体④
}
执行顺序如下:
①②④③ ②④③ ②④③... ...直到结束
但上面有个细节没有说到,就是②在最后结束时,仍然会执行判断,在判断结果为假时,就跳出循环
别有用心的人会在这个②上加上++或是--复合操作,这一步仍然会进行
*/
#include <stdio.h>
int main(void)
{
int s, i;
for (s = 0, i = 1; i < 3; i++, s += i)
;
printf("%d\n", s);
}
/*
分析:
① 这里为s=0,i=1
② 这里为i<3
④ 这里为空
③ 这里是i++,s+=i; 即i=i+1,s=s+i
分析,一目了然的是:i会从1增长到3,当3<3不成立时,跳出循环
循环的执行过程:
A ①i 取初值,i=1,②判断1<3,满足,执行④③,则i=2,s=0+2=2
B i=2,②判断2<3,满足,执行④③,则i=3,s=2+3=5
C i=3,②判断3<3,不满足,循环终止,跳出
结束
输出的s为5
不好理解的地方:
1. 只要 ② 判断满足,即结果为真,就一定会执行 ④
2. 而 ④ 执行完后,紧跟着就一定会执行 ③
3. 这个程序,把 ③ 搞成了语句块【两条语句】
一般情况下,只有循环控制变量在这里变化,即i变化
这里让人易理不清的就是,s也在这里变化了
【关键】,这个s还要用上刚刚变化后的i的值
4. 在工程应用中,真的不会这样写,但在学习语法时,确实要对这一点有深入的理解
*/
- 在for循环的自增中,不论使用i++还是++i,都是在执行完循环体之后才进行的自增
本文详细解析了C语言中for循环的执行顺序及过程,并通过具体实例加深理解。重点介绍了循环的三个组成部分:初始化、条件判断及更新表达式的执行时机。
1万+

被折叠的 条评论
为什么被折叠?



