广告位联系
返回顶部
分享到

c++ For循环执行顺序流程介绍

C#教程 来源:转载 作者:秩名 发布时间:2021-10-05 10:39:02 人浏览
摘要

for 循环允许您编写一个执行特定次数的循环的重复控制结构。 语法 C++ 中 for 循环的语法: for ( init; condition; increment ){ statement(s);} 下面是 for 循环的控制流: init会首先被执行,且只会执行一次。这一步允许您声明并初始化任何循环控制变量。

for 循环允许您编写一个执行特定次数的循环的重复控制结构。

语法

C++ 中 for 循环的语法:

for ( init; condition; increment )
{
   statement(s);
}

下面是 for 循环的控制流:

  1. init 会首先被执行,且只会执行一次。这一步允许您声明并初始化任何循环控制变量。您也可以不在这里写任何语句,只要有一个分号出现即可。
  2. 接下来,会判断 condition。如果为真,则执行循环主体。如果为假,则不执行循环主体,且控制流会跳转到紧接着 for 循环的下一条语句。
  3. 在执行完 for 循环主体后,控制流会跳回上面的 increment 语句。该语句允许您更新循环控制变量。该语句可以留空,只要在条件后有一个分号出现即可。
  4. 条件再次被判断。如果为真,则执行循环,这个过程会不断重复(循环主体,然后增加步值,再然后重新判断条件)。在条件变为假时,for 循环终止。

流程图



实例分析一

有以下for循环执行代码

较为基础,所以画图给大家讲解一下for循环执行步骤

1.执行for循环体里的第一个参数,也就是定义一个int整形变量,其变量名为i,并初始化为0

2.执行完第一个参数里的代码后,会执行第二个参数,判断i是否小于99

3.当第二个表达式为True时会去执行循环体里的代码,也就是当i不等于99的时候

4.执行完循环体里的代码后,就会去执行for循环的第三个参数也就是++i

当以上流程执行完成之后,进入非第一次执行循环时就不会执行for循环第一个参数了

而是直接去执行第二个参数里的判断表达式

然后在去执行循环体里的代码

然后在执行for循环的第三个参数

直到参数二:i>99的时候循环才会结束

i=98是最后一次循环,(i++/++i在for循环没有区别,不知道为啥,反正结构一样),这是i=99会执行第二步,不满足条件,跳出循环体,如果在循环体内打印i,i的最终结果为98(从0开始一共执行了99次,从1开始一共执行了98次,),如果在循环体外打印i,i的最终结果为99,大概这样

for循环的执行顺序(实例详解)

实例代码

#include <stdio.h>
#include <srdlib.h>
int main(void)
{
char c;
for(c=getchar();getchar()!='#';c=getchar())
putchar(c);
}

运行结果如下:

这是怎么执行的呢?

首先需要明确的一点是,for循环语句的执行顺序

先举一个简单的例子,

for(int i=0;i<10;i++){
//循环体
}

执行数序是:
i=0 初始化初值
i<10 进行判断,如果条件为真,则继续执行
执行循环体代码
i++ 变量i自增
回到第2步,一直循环下去,直到第2步为假, 退出循环.

总结一下:

for(条件①;条件②;条件③){
循环体④
}

执行顺序如下:
①②④③ ②④③ ②④③... ...直到结束

我们再来分析一下开头的案例

控制台输入:12345#
首先执行第一个getchar(),得到c=1;
然后执行第二个getchar(),得到c=2,同时判断 2 != '#' ;
然后执行循环体输出1;
然后执行第三个getchar(),得到c=3;
(此时一轮循环结束,回到for循环的条件②执行第二轮循环)
执行第二个getchar(),得到c=4,同时判断 4!= '#' ;
然后执行循环体输出3;
然后执行第三个getchar(),得到c=5;
(第二轮循环结束,再次回到for循环的条件②执行第三轮循环)
执行第二个getchar(),得到c=#,判断 ‘#'= '#' ,循环结束;


版权声明 : 本文内容来源于互联网或用户自行发布贡献,该文观点仅代表原作者本人。本站仅提供信息存储空间服务和不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权, 违法违规的内容, 请发送邮件至2530232025#qq.cn(#换@)举报,一经查实,本站将立刻删除。
原文链接 : https://jrhar.blog.csdn.net/article/details/80225912
相关文章
  • WPF实现窗体亚克力效果的代码

    WPF实现窗体亚克力效果的代码
    WPF 窗体设置亚克力效果 框架使用大于等于.NET40。 Visual Studio 2022。 项目使用MIT开源许可协议。 WindowAcrylicBlur设置亚克力颜色。 Opacity设置透
  • C#非托管泄漏中HEAP_ENTRY的Size对不上解析

    C#非托管泄漏中HEAP_ENTRY的Size对不上解析
    一:背景 1. 讲故事 前段时间有位朋友在分析他的非托管泄漏时,发现NT堆的_HEAP_ENTRY的 Size 和!heap命令中的 Size 对不上,来咨询是怎么回事?
  • C#中ArrayList 类的使用介绍
    一:ArrayList 类简单说明 动态数组ArrayList类在System.Collecions的命名空间下,所以使用时要加入System.Collecions命名空间,而且ArrayList提供添加,
  • C#使用BinaryFormatter类、ISerializable接口、XmlSeriali

    C#使用BinaryFormatter类、ISerializable接口、XmlSeriali
    序列化是将对象转换成字节流的过程,反序列化是把字节流转换成对象的过程。对象一旦被序列化,就可以把对象状态保存到硬盘的某个位
  • C#序列化与反序列化集合对象并进行版本控制
    当涉及到跨进程甚至是跨域传输数据的时候,我们需要把对象序列化和反序列化。 首先可以使用Serializable特性。 1 2 3 4 5 6 7 8 9 10 11 12 13 14
  • C#事件中关于sender的用法解读

    C#事件中关于sender的用法解读
    C#事件sender的小用法 开WPF新坑了,看了WPF的炫酷界面,再看看winForm实在是有些惨不忍睹(逃)。后面会开始写一些短的学习笔记。 一、什么
  • 在C#程序中注入恶意DLL的方法

    在C#程序中注入恶意DLL的方法
    一、背景 前段时间在训练营上课的时候就有朋友提到一个问题,为什么 Windbg 附加到 C# 程序后,程序就处于中断状态了?它到底是如何实现
  • 基于C#实现一个简单的FTP操作工具
    实现功能 实现使用FTP上传、下载、重命名、刷新、删除功能 开发环境 开发工具: Visual Studio 2013 .NET Framework版本:4.5 实现代码 1 2 3 4 5 6 7
  • C#仿QQ实现简单的截图功能

    C#仿QQ实现简单的截图功能
    接上一篇写的截取电脑屏幕,我们在原来的基础上加一个选择区域的功能,实现自定义选择截图。 个人比较懒,上一篇的代码就不重新设计
  • C#实现线性查找算法的介绍
    线性查找,肯定是以线性的方式,在集合或数组中查找某个元素。 通过代码来理解线性查找 什么叫线性?还是在代码中体会吧。 首先需要一
  • 本站所有内容来源于互联网或用户自行发布,本站仅提供信息存储空间服务,不拥有版权,不承担法律责任。如有侵犯您的权益,请您联系站长处理!
  • Copyright © 2017-2022 F11.CN All Rights Reserved. F11站长开发者网 版权所有 | 苏ICP备2022031554号-1 | 51LA统计