我学的是c++ primer
现在卡到这了
代码如下
void delay(int sec)
{
clock_ start=clock();//定义程序开始时间
clock_ lay=(clock_t)sec*CLOCK_PER_SEC;//自定义延时时间
;
while((clock()-start)<lay);//非常想知道这条语句的具体作用 具体什么时候结束循环
}
希望高手指点 手里只有20分了
谢谢!!
我来总结一下。。
clock()函数返回程序从开始执行到函数执行时所经过的时间,一般经过
1ms / CLOCK_PER_SEC ,clock()函数的返回值会增加1 。。
CLOCK_PER_SEC 为time.h文件中定义的宏,每个编译器都不一样。。
TC中这样定义: #define CLOCKS_PER_SEC 18.2
VC/BCC中这样定义: #define CLOCKS_PER_SEC 1000.0
现在分析函数的执行过程。。
函数传过来的是秒数,但是函数需要clock函数来延时,所以需要把秒数转化成
sec*CLOCL_PER_SEC,才能和clock函数返回值作比较。。
说的很清楚了,LZ应该明白了。。
clock()函数返回程序从开始执行到函数执行时所经过的时间,一般经过
1ms / CLOCK_PER_SEC ,clock()函数的返回值会增加1 。。
CLOCK_PER_SEC 为time.h文件中定义的宏,每个编译器都不一样。。
TC中这样定义: #define CLOCKS_PER_SEC 18.2
VC/BCC中这样定义: #define CLOCKS_PER_SEC 1000.0
现在分析函数的执行过程。。
函数传过来的是秒数,但是函数需要clock函数来延时,所以需要把秒数转化成
sec*CLOCL_PER_SEC,才能和clock函数返回值作比较。。
说的很清楚了,LZ应该明白了。。
温馨提示:答案为网友推荐,仅供参考
第1个回答 2010-01-24
这应该是一个延时函数:
我们假定实参sec=5,意思就是延时5秒
while((clock()-start)<lay);//
lay理解成5秒里的时钟周期个数,当个数到了while循环结束
以上为个人理解,仅供参考!(我没有学过c++ primer)
我们假定实参sec=5,意思就是延时5秒
while((clock()-start)<lay);//
lay理解成5秒里的时钟周期个数,当个数到了while循环结束
以上为个人理解,仅供参考!(我没有学过c++ primer)
第2个回答 2010-01-24
clock()表示系统当前时刻
因此while((clock()-start)<lay)的循环跳出条件为:
系统当前时刻减去delay函数开始被调用的时刻,即函数的运行时间大于自定义的延时时间时跳出循环。
这个delay函数相当于用执行while循环的时间达到延时的目的
这样说能理解吗?
因此while((clock()-start)<lay)的循环跳出条件为:
系统当前时刻减去delay函数开始被调用的时刻,即函数的运行时间大于自定义的延时时间时跳出循环。
这个delay函数相当于用执行while循环的时间达到延时的目的
这样说能理解吗?
第3个回答 2010-01-24
sec作为参数传入,即是你想要延时的时间,clock_start是开始时间,然后,clock_lay是把你传入的参数强制转化为时间函数的数据类型,同类型才能比较,然后while循环是要使这个函数运行时间到相应的时间才跳出循环,即到指定的时间延时。具体就是到sec时间结束delay