前言
都知道在for循环的后面加一个分号就可以将程序秀一脸血,这样的操作也会被用于一些延时操作,
但是这样的方法和电脑处理器的效率有关,有时候换了电脑时间会不一样,当然可以调整循环次数来实现时间一致,但是有更好的方式。
clock函数
头文件 :< ctime > (C中是<time.h>)
(其实头文件那里我也不想加空格,实在是不知道又碰到了哪个标识符,不加空格不能输出)
clock()函数返回开始执行后所用的系统时间,但是存在一个问题,返回值的类型不一定是秒,可能是系统时间单位的量,解决办法如下:
文件提供了一种类型叫做 clock_t(其实头文件里面写得很清楚,就是typeof了long型)
还有一种常量,CLOCKS_PER_SEC,等于每秒钟包含的时间单位数。
啥意思?就是 系统时间 / 常量 = 秒数、秒数 * 常量 = 以系统时间为单位的时间。
所以clock_t a = clock();//此时a就是开始执行的时间。
int main()
{
using namespace std;
int delay;
cin>>delay;//输入持续时间,以 秒 为单位
clock_t delay_t = delay * CLOCKS_PER_SEC;//转化系统时间
clock_t start = clock();
while(clock()-start < delay);
cout<< "Time over!"<<endl;
return 0;
}
直到读入的时间和起始时间的差值为输入的延时时间,程序循环结束,退出。
说明
clock函数是执行到的时间,确实如此,但和程序的起始时间和执行到的时间还是有一个时间差的,这个要注意了。
另外我上网上查还有一个time函数,但不是那么精确,因为没有深入了解,这里不好下判断优劣。