C语言的clock()测出来的是什么时间

比如这样的程序
start=clock();
...
end=clock();
cost=end-start;
最后的结果cost是一个很大的值(150000ms)但是程序运行的时间远不到150s
clock()测的不是运行的时间吗

clock函数返回的是cpu时间,并不是秒数,真正的一秒钟可能包含若干个CPU时间,这个值通常是由宏CLOCKS_PER_SEC来定义,表示一秒中有CLOCKS_PER_SEC这么多个cpu时间,不同的编译器可能不同,比如,linux C中,它是1000000,在VC6中,它是1000,你用cost除以CLOCKS_PER_SEC即可得到实际的秒数。

附linux下clock函数说明:

在单独的窗口中打开图片可以看得更清楚一些,注意红线部分说明:要计算秒数,除以CLOCKS_PER_SEC

温馨提示:答案为网友推荐,仅供参考
第1个回答  2017-04-19

clock函数测出来的时间为进程运行时间,单位为滴答数(ticks)。

一、clock函数声明在time.h中,声明形式为:

clock_t clock(void) ;

其中clock_t为标准库中的自定义类型,一般为long型。

typedef long clock_t;

二、函数功能为返回从“开启这个程序进程”到“程序中调用clock()函数”时之间的CPU时钟计时单元(clock tick)数。

三、返回的tick数,要转换为常用的时间单位,可以除以CLOCKS_PER_SEC,这个是一个宏,同样定义在time.h中。 

以下代码可以打印程序运行的时间:

#include <stdio.h>
#include <time.h>
void show_run_time(void)
{
    clock_t t;
    int s, ms;
    t=clock();//获取tick数。
    s=t/CLOCKS_PER_SEC;//计算秒。
    ms=t%CLOCKS_PER_SEC*1000/CLOCKS_PER_SEC;//计算毫秒值。
    printf("程序已经运行%d.%03d秒\n", s, ms);//输出结果。
}

第2个回答  2015-08-04
C语言是没有clock()库函数的,C++中也没有。
你是在哪里看到的程序?如果是C语言,很可能是你们自己设计的一个时钟。如果这样,你需要去查看这款时钟芯片的手册,或直接研读这个clock()函数,看输出的150000究竟是什么单位。
第3个回答  2015-08-04
运行出来是你电脑上本地时间、希望您能满意。
相似回答