【发布时间】:2023-03-18 12:31:02
【问题描述】:
我只是编写 ac 程序来每隔一秒打印一次整数值作为练习,这个程序在打印下一个整数之前等待一秒钟后打印整数,所以程序需要 5 秒才能完成执行。我正在使用 @ 987654321@ 和 time() 作为计时器,它可以工作,但是当我使用 clock_t 和 clock 作为计时器时,它不起作用。
据我所知,time_t 和 time() 是绝对时间,使用自 1970 年以来经过的秒数。而 clock_t 和 clock() 使用自程序运行以来的时间。
这是第一个使用time_t和time(NULL)的代码
#include <stdio.h>
#include <time.h>
int main (void) {
int i;
int sec=1;
time_t start,end;
start=time(NULL);
for(i=1;i<=5;i++){
time_t wait=sec+time(NULL);
while(time(NULL) < wait) {}
printf("%d\n",i);
}
end=time(NULL);
printf("program take %d second\n",(unsigned int)difftime(end,start));
return 0;
}
这是程序运行时的结果:
1
2
3
4
5
program take 5 second
程序的执行每隔一秒准确打印整数或等待一秒 在打印下一个整数之前
这是使用clock_t 和clock() 的第二个程序
#include <stdio.h>
#include <time.h>
int main (void) {
int sec=1;
int i;
clock_t start,end;
start=clock();
for(i=1;i<=5;i++){
clock_t wait=sec*CLOCKS_PER_SEC;
while(clock ()<wait){}
printf("%d\n",i);
}
end=clock();
printf("the program take %lf second\n",(double)(end-start)/CLOCKS_PER_SEC);
return 0;
}
这是使用clock_t 和clock() 的第二个程序的结果
1
2
3
4
5
the program take 0.998901 second
在执行之后,它不会每秒钟打印一次,而是先等待一秒钟,然后打印所有整数,而不是在打印下一个整数之前等待一秒钟。
请解释第二个程序发生了什么以及两者之间的确切区别 时间()和时钟()函数?
【问题讨论】:
-
time()实时报告(自 1970 年以来通常以秒为单位)。clock()报告 CPU 时间。