2020-10-28-成信大-C语言程序设计-20201学期《C语言程序设计B》C-关于for的执行顺序

本文详细解析了C语言中for循环的执行顺序及过程,并通过具体实例加深理解。重点介绍了循环的三个组成部分:初始化、条件判断及更新表达式的执行时机。

20201027-成信大-C语言程序设计-20201学期《C语言程序设计B》C-关于for的执行顺序

普通的一个for循环,看一下过程

先举一个简单的例子
for(int i=0;i<10;i++){
//循环体
}
执行数序是:

  1. i=0 初始化初值
  2. i<10 进行判断,如果条件为真,则继续执行
    为假,直接退出循环,执行之后的语句
  3. 执行循环体代码
  4. i++ 变量i自增
  5. 回到第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,都是在执行完循环体之后才进行的自增
### 回答1: 您好,我是AI语言助手,以下是对您的回复: 20201022-成信大-c语言程序设计-20201学期《c语言程序设计b》是一门面向学生的C语言程序设计课程,主要教授C语言的基础知识和编程技巧,包括数据类型、运算符、流程控制语句、函数、指针、数组、结构体等内容。通过本课程的学习,学生可以掌握C语言的基本语法和编程思想,提高编程能力和解决问题的能力,为以后的编程学习和工作打下坚实的基础。 ### 回答2: 20201学期的《c语言程序设计b》是一个深入学习C语言的课程,教授的是C语言的高级应用。在本次课程中,学生将会进一步学习C语言的语法、程序设计思路以及具体的编码实践。 首先,学生将会学习C语言中的函数、指针、结构体、联合体、枚举等高级概念。这些概念是C语言面向对象编程中至关重要的概念,也是学生在日后编写复杂程序时所必须了解的内容。此外,在学习这些概念的同时,学生还将学习如何使用宏定义和预编译指令来进一步优化程序性能。 其次,学生将会进行具体的编码实践,包括基于C语言的数据结构设计和实现、字符串处理、文件操作、网络编程等等。这些项目和实践将会提供给学生量的机会来将所学的概念应用到具体的场景中,帮助学生更深入地理解C语言的应用。 此外,学生还将参加课堂讨论、代码评审等活动,通过这些活动来提高自己的编程能力、代码质量和团队协作能力。教师也将会给学生提供详细的反馈,帮助他们改善自己的问题和提高自己的能力。 总之,《c语言程序设计b》是一门非常重要的课程,对于学生日后从事计算机编程工作具有非常重要的意义。通过学习这门课程,学生将会幅提高自己的编程能力、透彻理解C语言并将其应用到实际工作中。 ### 回答3: 成信大-20201学期《c语言程序设计b》是一门针对深入学习C语言的高级课程,内容涵盖了高级数据结构、算法设计、动态内存分配、文件操作等等。 在这门课程中,学生将通过实践和理论学习,掌握C语言的高级编程技巧和策略。课程的重点之一是高级数据结构,包括链表、树、哈希表、图等等,学生将深入理解数据结构的实现和应用。 除此之外,课程还将涉及算法设计和分析,学生将学习如何设计出高效的算法,并进行时间和空间复杂度分析。动态内存分配和文件操作也是这门课程的重点,这些技术对于C语言程序设计来说非常重要。 学生在课程中还将开展实践项目,以实现理论学习。通过项目实践,学生将在实际中应用学到的技术,发现其中存在的问题并解决。 总之,成信大-20201学期《c语言程序设计b》是一门非常高级的、面向深度学习的课程。通过系统学习和实践的方式,学生将深入掌握C语言的高级编程技巧。这门课程对于想要深入学习C语言的学生来说是非常重要的。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值