首页 > 代码库 > for循环深究

for循环深究

 

#include<iostream>using namespace std;int main (){	int i = 0;	for(i = 0,cout<< "First=" << i <<‘ ‘;cout<< "Second=" << i <<‘ ‘,i < 10;i++,cout<< "Third=" <<i<<‘ ‘)	{		cout<<"Fourth="<<i<<endl;	}	return 0;}

  这个是朱老师《C语言笔试陷阱与难点第一阶段》里的一道题,想告诉我们for 循环的顺序。简单理解下 如果整个循环如下

for(A;B;C){D}

  其顺序为A,B,D,C,B,D,C,B,D,C..  直到判断语句成立结束。如果改一下B句的逗号表达式的顺序 即上述语句第二句变为

for(i = 0,cout<< "First=" << i <<‘ ‘;i<10,cout<< "Second=" << i <<‘ ‘;i++,cout<< "Third=" <<i<<‘ ‘){cout<<"Fourth="<<i<<endl;}

  输出是一个无限循环了。解释如下,首先 i = 0,cout<< "First=" << i <<‘ ‘; 这句执行完就没事了。  然后执行 i<10 然后执行 cout<< "Second=" << i <<‘ ‘ ;然后执行循环体 cout<<"Fourth="<<i<<endl; 然后执行 i++,cout<< "Third=" <<i<<‘ ‘  再然后执行 i<10......

  我想表达的是,这是一个逗号表达式,0,1 这一句的结果是1,cout<<"Second="<<i<<‘ ’ 这一句的值恒为1。 

  做了下实验 如果把判断改成  i < 10,0 则输出初始语句直接结算。如果改成 i < 10,1 则输出无限循环。

for循环深究