c++中一个困惑!

来源:百度知道 编辑:UC知道 时间:2024/06/22 15:51:31
#include<iostream>
using namespace std;
void main()
{int x,i;
for(i=1;i<=4;i++)
{x=i*i;
if(x==9) continue;
cout<<"x="<<x<<endl;
}
cout<<"i="<<i<<endl;
}
最后结果为:
x=1
x=4
x=16
i=5
为什么最后输出的i是5而不是4呢!
是新手,请解释详细些,谢谢!!

你要知道for循环里面的三个语句的执行次序
for(第一句; 第二句; 第三句)
第一句为初始化所用,只执行一次。
第一次执行完第一句后,执行第二句,判断条件是否成立,如果成立,执行循环体,如果不成立直接跳出(执行for循环后面的语句,不执行第三句)。
如果条件成立,执行循环体,每次执行完后,先执行第三句改变i的值,然后判断改变后是否符合第二句的条件,如果符合,继续执行循环体....一直执行到执行第三句后,第二句不成立,则此循环结束。

例子中for(i=1;i<=4;i++)
首先,第一句i=1,给i初始化。
然后判断第二句是否成立,发现成立,所以执行循环体,第一次结束后,执行第三句i++(执行后i=2,仍符合i<=4的条件,所以继续执行循环体...直到第4次循环结束后此时i=4,然后回来执行第三句i++,执行完后i=5,然后判断第二句是否成立,发现已经不成立,所以循环结束,此时i=5).

for(i=1;i<=4;i++)
这个解释起来就是
设置i=1
当i小于或者等于4的时候,程序向下继续运行,并且i值增大1

所以
如果是for(i=1;i<4;i++)
i输出的结果就是4了

是for语句里面的i++,
当最后一次循环结束以后,i自加了一次,所以最后输出的是i=5.

当i等于4的时候,满足条件i<=4,满足条件就需要执行i++,这样i就等于5啦。