今天在书上看例子的时候,突然觉得对于for循环三个表达式的执行时间的理解还是很模糊,只知道在这里++i和i++的效果是一样的,而且前缀模式的效率更高,但是对于这一条表达式的是在本次循环开始前执行还是循环完毕之后执行还是不确定,于是决定就直接用简单的小程序分析一下。

#include <iostream>using namespace std;void main()
{int i,j;for(i=0,j=0;i<3;++i,cout<<"i= "<<i<<endl,j++,cout<<"j= "<<j<<endl){cout<<"my i= "<<i<<endl;cout<<"my j= "<<j<<endl<<endl;}system("pause");
}

非常简单的语句,输出

my i=0 my j=0

i=1 j=1 my i=1 my j=1

i=2 j=2 my i=2 my j=2

i=3 j=3

这样,可以清楚地发现,for循环中三个表达式的顺序

首先肯定是赋初值和判断,而变量更新,则是在执行完本次循环之后再进行的,从输出的第一行中可以分析得到,没有输出i=0 j=0,同时也发现了前缀与后缀在for循环中是相同的作用(效率的差别)

继续往后想,如果循环中嵌套了条件分支,其中包含break语句又会是一个什么情况呢,继续写简单的程序探究。

#include <iostream>using namespace std;void main()
{int i;for(i=1;i<4;++i,cout<<"i= "<<i<<endl){if(i%3==0)
         break;cout<<"my i= "<<i<<endl<<endl;}

    cout<<"final i= "<<i<<endl;    
system("pause");
}

输出

my i=1

i=2

my i=2

i=3

final i=3

可以看出,当执行break语句跳出循环的时候,程序将会直接跳过循环更新语句,i的终值也不会更新。

这样,我们可以讲for循环的“循环”理解的更加透彻,for循环中的三个表达式

初值表达式,可以理解为整个循环体的开始,相当于预处理的部分,

条件判断表达式呢,相当于每一轮循环的标题,标出我这轮循环是否有效,

最后的条件更新表达式,则是连接两轮循环之间的桥梁,

下面是大致给的一个示意图

以上也是在初始学习c++过程中理解问题的一个过程,简单的问题,简单粗略的分析。

希望有前辈能够之处其中的错误,给出一些学习的参考意见,谢谢了,继续奋斗了

关于for循环中三个语句的执行顺序相关推荐

  1. java 中的finally 语句块执行顺序

    2019独角兽企业重金招聘Python工程师标准>>> 参考博文1:https://www.ibm.com/developerworks/cn/java/j-lo-finally/ ...

  2. for循环中表达式和循环体的执行顺序

    对于学c的朋友来说,for循环可能使我们经常用到的一种循环语句 for(表达式1:表达式2:表达式3){循环体} 知道其的语句执行顺序对我们来说可以避免很多失误 我们可以利用下面这个小程序轻易测出其内 ...

  3. 避免在for循环中使用sql语句

    文章目录 for循环中使用sql语句 一个大sql实现功能 2个for循环用java遍历 用sql搞崩一个项目 这是个基本常识额,在这里再赘述一下. 例如一个大sql查出100条结果,现在每条记录要关 ...

  4. for循环中各语句的执行顺序

    for循环中各语句的执行顺序 初学编程的话,基本上是避不开for循环的.而作为一个很基本的知识点,我们就来梳理一下for循环中各语句的执行顺序! 首先我们来介绍一下for循环的基本形式 for(初始化 ...

  5. python循环 break举例,python循环中使用break语句终止循环

    break语句是用来 终止 循环语句的,即哪怕循环条件没有称为False或序列还没有被完全递归,也停止执行循环语句. 一个重要的注释是,如果你从for或while循环中 终止 ,任何对应的循环else ...

  6. oracle and和or的执行顺序,Oraclewhere语句中and,or,not的执行顺序

    Oracle where子句里面的and,or,not:1.a and b(顺序执行) (1)a,b同true则true, (2)a,b一false则false, [1]若a为 Oracle wher ...

  7. 求一元多项式pn(x)=a(i)x^i(i~n的和)的值pn(x0),并确定算法中每一语句的执行次数和整个算法的时间复杂度。注意选择你认为较好的输入和输出方法。本题的输入为a(i)(i=0,1,.

    求一元多项式pn(x)=a(i)x^i(i~n的和)的值pn(x0), 并确定算法中每一语句的执行次数和整个算法的时间复杂度.注意选择你认为较好的输入和输出方法. 本题的输入为a(i)(i=0,1,. ...

  8. 【MySQL】九、数据排序(升序 order by ... asc,降序 desc),sql语句的执行顺序

    文章目录 1. 语法 2. 案例 (1)按照工资升序,找出员工名和薪资. (2)按照工资降序,找出员工名和薪资. (3)按照工资的降序排列,当工资相同的时候在按照名字的升序排列. (4)找出员工岗位是 ...

  9. switch语句的执行顺序

    标准的switch语句用法 integral-selector 位置填入选择因子,一般为变量或者表达式,此处的类型应于 integral-values 处的类型保持一致: integral-value ...

最新文章

  1. 数据结构与算法之选择排序
  2. winform窗体模板_如何验证角模板驱动的窗体
  3. c++ 字典_再来瞄一眼字典与集合?
  4. kafka使用问题解决
  5. GNU make manual 翻译( 一百二十四)
  6. 导出Excel,身份证号码默认为成科学计数形式,解决方法.
  7. Vue中watch用法详解
  8. html前端素材(网页模板素材)
  9. 5G关键技术与系统演进pdf
  10. 微信如何添加企业微信信息服务器地址,企业微信和微信消息怎么互通_企业微信和微信消息互通操作流程一览...
  11. 云聚高性能,论道“新超算”
  12. html添加一条虚线垂直的,【html问题】在网页中添加垂直分割线
  13. 悲观锁和乐观锁的区别,怎么实现
  14. 【什么是 Nodejs ?】
  15. 乘法器——booth编码
  16. [PaddleSeg源码阅读] PaddleSeg Validation 中添加 Boundary IoU的计算(3)——添加Boundary IoU
  17. pygame-1.9.6-cp38-cp38-win_amd64.whl百度云下载
  18. QQ聊天框变成方框口口口口的解决办法
  19. 计算机硬件闫宏印答案,计算机硬件技术基础
  20. 诺奖得主涉嫌学术造假!30多篇论文被曝P图、复制粘贴,牵扯中科大教授等多国学者

热门文章

  1. 他是阿里年头最久的越南小二,从中供铁军学到地推秘诀
  2. mysql删除不彻底,mysql删除不彻底的解决方法
  3. Android Intent Service Usage
  4. ip地址映射-方便开发微信公众号,小程序等
  5. android怎么开机画面,安卓手机开机画面怎么修改?
  6. ArcGIS空间校正和地理配准
  7. torch has an invalid wheel.
  8. ResponseEntity
  9. VS编译失败,找不到源文件!!!
  10. 浅谈压缩感知(二):理论基础