as clock

clock()是C/C++中的计时函数,而与其相关的数据类型是clock_t。

它的具体功能是返回处理器调用某个进程或函数所花费的时间。函数返回从“开启这个程序进程”到“程序中调用clock()函数”时之间的CPU时钟计时单元(clock tick)数,其中clock_t是用来保存时间的数据类型。

在time.h文件中,我们可以找到对它的定义:

#ifndef _CLOCK_T_DEFINED  

typedef long clock_t;  

#define _CLOCK_T_DEFINED  

#endif  

clock_t其实就是long,即长整形。该函数返回值是硬件滴答数,要换算成秒或者毫秒,需要除以CLK_TCK或者 CLK_TCK CLOCKS_PER_SEC。比如,在VC++6.0下,这两个量的值都是1000,这表示硬件滴答1000下是1秒,因此要计算一个进程的时间,用clock()除以1000即可。

clock的返回值一直是0的原因:

1、编译器优化,for循环实际根本没执行,直接跳过去了,所以时间为0。

2、clock计算的是程序占用cpu的时间,如果你的程序执行的动作很少,那么clock算出的时间也很少。

3、建议使用time gettimeofday函数来计时。

扩展资料:

C语言中clock()函数的程序例1:(TC下运行通过)

#include <stdio.h>

#include <time.h>

int main(void)

{

clock_t start, end;

start = clock();

delay(2000);

end = clock();

printf("The time was: %f\n", (double)(end - start) / CLK_TCK);

return 0;

}

说明:CLK_TCK 定义在TC中的time.h中:#define CLK_TCK18.2。

在VC6.0中也有关于CLK_TCK的宏定义,不过其值不再是18.2,而是1000。

实际上在VC6.0中CLK_TCK已完全等同CLOCKS_PER_SEC。

参考资料来源:百度百科-clock()

网上资料错了,clock返回当前进程创建到现在经过的时钟周期数

你的程序那么短,返回0是正常的

我在自己的电脑上试了试,在调用clock()前用了Sleep(1000),结果就不一样了

Sleep()是 Windows API,不要在你的程序里用

而且觉得,随机数钟子只要设一次就够了,不应该每次设,
你这样,在一段时间内(大约1毫秒)都会得到同样的随机数

clock返回的大约是毫秒级(不是处理器周期,你可以查CLOCKS_PER_SEC)
C语言函数clock()  功 能:
返回处理器调用某个进程或函数所花费的时间。

  用 法: clock_t clock(void);

  说明:clock_t其实就是long,即长整形。该函数返回值是硬件滴答数,要换算成秒或者毫秒,需要除以CLK_TCK或者 CLK_TCK
CLOCKS_PER_SEC。比如,在VC++6.0下,这两个量的值都是1000,这表示硬件滴答1000下是1秒,因此要计算一个进程的时间,用clock()除以1000即可。具体见第一个例子。

  程序例1:(TC下运行通过)

  #include <stdio.h>

  #include <time.h>

  int main(void)

  {

  clock_t start, end;

  start = clock();

  delay(2000);

  end = clock();

  printf("The time was: %f\n", (double)(end - start) / CLK_TCK);

  return 0;

  }

  CLK_TCK 定义在TC中的time.h中:#define CLK_TCK
18.2。在VC6.0中也有关于CLK_TCK的宏定义,不过其值不再是18.2,而是1000。实际上在VC6.0中CLK_TCK已完全等同于CLOCKS_PER_SEC。

  在VC中delay用Sleep()来代替,其头文件是windows.h。

  程序例2:(VC6.0下运行通过)

  #include <stdio.h>

  #include <time.h>

  #include<windows.h>

  int main(void)

  {

  clock_t start, end;

  start = clock();

  Sleep(2000);

  end = clock();

  printf("The time was: %d\n", (end - start) /
CLK_TCK);//注意是%d,不再是%f

  return 0;

  }

  程序例3:(VC6.0下运行通过)

  #include "stdio.h"

  #include "stdlib.h"

  #include "time.h"

  int main( void )

  {

  long i = 10000000L;

  clock_t start, finish;

  double duration;

  

  printf( "Time to do %ld empty loops is ", i );

  start = clock();

  while( i-- ) ;

  finish = clock();

  duration = (double)(finish - start) / CLK_TCK;
//CLK_TCK在VC6.0中可以用CLOCKS_PER_SEC

  printf( "%f seconds\n", duration );

  system("pause");

  return 0;

  }
clock 计算的是从程序运行到执行clock时的时间间隔。

重复启动程序,时间还是 从程序运行到执行clock时的时间间隔。
这个数字不变,种子不变。你的随机就不随机了。

所以要用:
srand(time(NULL));
time(NULL) 是永远在变的。种子变,随机了。time的精度达不到?你的意思是不是嫌它跑得不够快。
那你可以将它的结果乘以一些数。

TC与gcc它们的时间函数差别很多。主要还是tc下拿不到毫秒,微秒级的时间。
苹果6plus换壳 presto java jdbc 幸福 造句 h3c s2652 端口绑定 whos loving you原唱 推理avg游戏 樱樱大侠 私拍 vuejs disk目录 山东五金市场 be against war 游泳英语 爱普生eb c760 泰西文 平行线 txt sl400内存升级 lost in rivers 豪爵铃木gn125对比钻豹 fm2010 tt精简 v3 Mili milk tecplot流线图 零太汉化组解压密码 多说微博 pixel 2和iphone x 夏普ud30a主板 nfl 2018 super bowl dota2先锋 装备 bus simulator 人鱼椅子 三星c8与c9pro heavens divide钢琴曲 evening gown

Copyright 生活吧 Some Rights Reserved

如反馈或投诉等情况联系:une35498#163.com