标签:blog io os for sp div on log bs
#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 则输出无限循环。
标签:blog io os for sp div on log bs
原文地址:http://www.cnblogs.com/chaoseco/p/4047577.html