为什么下面的输出结果始终是0

来源:百度知道 编辑:UC知道 时间:2024/06/10 14:28:11
#include "stdio.h"
#include "math.h"
#include "time.h"
void main()
{int i,j,seconds= time((time_t*)NULL);
i=seconds;
delay(100000);
j=seconds;
printf("%d\n",j-i);
getch();
}
我的意思想得到时间差的,这个如果不行 改如何得到一个10S的时间差函数啊

程序已在vs2005和dev-c++下编译确认:
#include<stdio.h>
#include<stdlib.h>
#include<time.h>

int main()
{
clock_t start,end;//定义clock_t型变量,clock_t实际为long型
printf("Now delay begin.\n");
start=clock();//获得从开启这个程序进程到调用clock()函数时之间的CPU时钟计时单元数(clock tick)
end=start+10*CLOCKS_PER_SEC;//计算延时结束时CPU需要计时到的单位数
while(clock()<end)//如果计时数未到,循环计数
;
printf("Delay 10 seconds completed!\n");//计时到延时10秒显示信息

system("pause");
return 0;
}

附加解释:
CLOCKS_PER_SEC是一个在头文件time.h中定义的常量,它表示一秒钟会有多少个时钟计时单元数(clock tick),其一般定义如下:
#define CLOCKS_PER_SEC ((clock_t)1000)
有时定义如下:
#define CLOCKS_PER_SEC ((clock_t)1000000)
可以看到在头一种定义中每过千分之一秒(1毫秒),调用clock()函数返回的值就加1,也就是说代表一秒钟的计数
而在第二种定义中CLOCKS_PER_SEC精确到了微秒,所以精度更高,表示计时就更准。
一般多用头一种定义,具体可以查看机子中编译器自带的头文件time.h。
你程序中delay(100000)是延时100秒而不是10秒。注意这个函数的参数是毫秒,而且这个函数的延时时间和机子内部定时有关,所以说是相