| 网站首页 | 业界新闻 | 小组 | 交易 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
Reworld,下班在家制作游戏,1500万奖金等你拿以码会友 以友辅仁
共有 5886 人关注过本帖, 1 人收藏
标题:c语言中,计算时间时,clock_t的用法
只看楼主 加入收藏
cx1363525141
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2017-4-22
结帖率:100%
  已结贴   问题点数:20  回复次数:5   
c语言中,计算时间时,clock_t的用法
新人求解:
    今天我在网上看到一个知识点,就是说clock_t是int的一个别名,如果按此讲,那么在输出时间时只能用int型输出了吗?
搜索更多相关主题的帖子: 知识点 c语言 网上 
2017-04-22 07:17
wp231957
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:神界
等 级:版主
威 望:398
帖 子:13377
专家分:51589
注 册:2012-10-18
  得分:10 
看你的目的 是想实现神马

DO IT YOURSELF !
2017-04-22 08:57
cx1363525141
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2017-4-22
  得分:0 
回复 2楼 wp231957
我是想比较精确是得到程序的运算时间,如果用int的话,就只能得到整型,没有double准确吧!
2017-04-22 09:25
bjut_Allen
Rank: 9Rank: 9Rank: 9
来 自:平乐园工业技术学校
等 级:蜘蛛侠
威 望:8
帖 子:323
专家分:1223
注 册:2016-10-16
  得分:10 
time_t  time(time_t  *t);
其中time_t类型就是long类型,在time.h中已经声明。
time函数返回一个长整数,其值以秒为单位。2次调用此函数,它们返回值的差,即为2次调用之间的时间差(秒数)。使用时,参数可使用空指针。
举一个简单的例子:
#include "stdafx.h"
#include <stdio.h>
#include <time.h>
#include <Windows.h>
int main()
{
    time_t  t1, t2;
    int interval;
    t1 = time(NULL);
    for (int i = 0; i < 30000; i++)
    printf("%d\n",i);
    t2 = time(NULL);

    interval = t2 - t1;
    printf("%d\n", interval);
    system("pause");
    return 0;
}
    这个程序的作用是输出“输出3万次”的时间。
需要注意的是time()返回值得单位是秒,只能进行最小以秒为单位的时间控制。
3.4.3.2 localtime函数及应用
接下来我们介绍localtime():
函数localtime可以把用长整型数值表示的时间变为年、月、日、星期、小时、分、秒等。其原型(在time.h中)是:
struct tm *localtime(time_t  *t);
返回值是指向struct tm结构类型的指针。
结构类型struct tm已经在time.h中声明,内容是:
struct tm
{
    int tm_sec;        //  秒
    int tm_min;       //  分
    int tm_hour;       //  小时
    int tm_mday;      //  日
    int tm_mon;       //  月
    int tm_year;       //  年
    int tm_wday;      //  星期几(0表示星期天)
    int tm_yday;       //  本年天数
    int tm_isdst;       //  是否使用了夏时制
};
函数参数是一个指针,指向一个存放用长整型数值表示的时间的变量,通常是指向time函数的返回值。至于为什么要用time的返回值,因为time函数返回的是从1970年1月1日00:00:00到现在的此时此刻所经过的秒数。所以localtime函数只是将这个数值计算成结构体里的变量并赋给结构体,因为time()的最小分度是秒,所以localtime()最小分度也是秒。至于localtime()对于课设的作用,可以在存档的时候记个时间吧。
3.4.3.3 clock函数及应用
time函数是获取系统的实际时间,而clock函数是获取进程使用的cpu时间单元总数。
函数原型:clock_t  clock(void);
原型在:time.h 头文件中
功能:用于测试2次调用之间的时间间隔。
返回值类型:clock_t,(实际就是long类型)已经在头文件中声明,程序中可直接使用。
返回值:从程序运行时到本函数被调用经过的处理器时间。此值除以CLOCKS_PER_SEC(即18.2,已经在头文件中声明)则换算为秒数。
#include "stdafx.h"
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
void isleep(clock_t wait);
void main(void)
{
    long    i = 60000000L;
    clock_t start, finish;
    double  duration;
    // Delay for a specified time.
    printf("Delay for three seconds\n");
    isleep((clock_t)3 * CLOCKS_PER_SEC);
    printf("Done!\n");
    //* Measure the duration of an event.
    printf("Time to do %ld empty loops is ", i);
    start = clock();
    printf("%ld\n", start);
    while (i--)
        ;
    finish = clock();
    printf("%ld\n", finish);
    duration = (double)(finish - start) / CLOCKS_PER_SEC;
    printf("%10.2f seconds\n", duration);
}
// Pauses for a specified number of milliseconds.
void isleep(clock_t wait)
{
    clock_t goal;
    goal = wait + clock();
    while (goal > clock())
        ;
}
其中,2次调用clock()函数获得的返回值的差再除以CLOCKS_PER_SEC,就得到2次调用clock()函数所间隔的秒数。

Code is my life.
2017-04-22 12:22
cx1363525141
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2017-4-22
  得分:0 
回复 4楼 bjut_Allen
这是 借鉴的 还是 个人所想?
2017-04-23 07:18
bjut_Allen
Rank: 9Rank: 9Rank: 9
来 自:平乐园工业技术学校
等 级:蜘蛛侠
威 望:8
帖 子:323
专家分:1223
注 册:2016-10-16
  得分:0 
回复 5楼 cx1363525141
这是我们的课设资料,做游戏要用到倒计时功能,不是网上照搬的。。

Code is my life.
2017-04-23 15:03
快速回复:c语言中,计算时间时,clock_t的用法
数据加载中...
 
   





关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.032560 second(s), 9 queries.
Copyright©2004-2019, BCCN.NET, All Rights Reserved