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

今天在书上看例子的时候,突然觉得对于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++过程中理解问题的一个过程,简单的问题,简单粗略的分析。

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

  • 6
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值