c++数据结构---程序步数问题

c++数据结构---程序步数问题,第1张

你的理解可以认为是对的

for运行的步聚是

1.初始化语句

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。

:一个程序步可以大概的定义为一个语法或者语义上的程序片段,该片断的执行时间独立于实例特征。一个程序步所表示的计算量可能与另一个程序步所表示的计算量不同。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12063407.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-20
下一篇 2023-05-20

发表评论

登录后才能评论

评论列表(0条)

保存