for运行的步聚是
2.判断表达式1
3.执行循环体内的语句
4.执行表达式2
接下来重复2 3 4步
当表达式1为假时退循环
int i=0
for(i<=10i++)//这个只有判断语句,没有初始化语句
int i
for(i=0i<=10i++)//赋值语句,
for(int i=0i<=10i++)//初始化语句 判断语句
for(int i=0i<=10i=i+2)
//循环步数是由我们控制的,不是每次都加1
for(int b=1,c=b+1,a=b+ca<10a++)
{
cout<<a<<endl
cout<<b<<endl
cout<<c<<endl
}
我们只看第一次运行结果
3
1
2
现在我们把a<10改成a<4再来运行
3
1
2
a的值没有变化
现在我们把a<4改成a<3再来运行
什么都没有
到这儿我们就可以知道.
for是先初始化再执行判断
接下来我们把a<3改成a<5再来运行
cout<<a<<endl处设置断点
第一次循环//中断 a=3
312
第二次循环//中断 a=4
412
退出循环
现在我们可以看出
for是先初始化再执行判断接下来运行表达式2
int b=1,c=b+1,a=b+c
这个到底是1步还是三步你自己去看逗号表达式.下面是ASM代码
mov DWORD PTR _b$[ebp], 1
mov eax, DWORD PTR _b$[ebp]
add eax, 1
mov DWORD PTR _c$[ebp], eax
mov ecx, DWORD PTR _b$[ebp]
add ecx, DWORD PTR _c$[ebp]
mov DWORD PTR _a$[ebp], ecx
执行次数主要强调的是循环体内的执行次数。而程序步数则从全局来考虑的,一步一步的执行的总和。一般而言没有循环等相关情况下,执行次数为1。
:一个程序步可以大概的定义为一个语法或者语义上的程序片段,该片断的执行时间独立于实例特征。一个程序步所表示的计算量可能与另一个程序步所表示的计算量不同。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)