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 则输出无限循环。

posted @ 2014-10-24 10:06  chaos_lock  阅读(155)  评论(0)    收藏  举报