肯定是0 clock_t的定義是typedef long clock_t也就是長(zhǎng)整形了,CLOCKS_PER_SEC這個(gè)值是1000,你自己的代碼走出來(lái)的值不到1000所以結(jié)果為0;
成都創(chuàng)新互聯(lián)公司是一家專業(yè)的成都網(wǎng)站建設(shè)公司,我們專注成都網(wǎng)站建設(shè)、成都做網(wǎng)站、網(wǎng)絡(luò)營(yíng)銷、企業(yè)網(wǎng)站建設(shè),買友情鏈接,廣告投放為企業(yè)客戶提供一站式建站解決方案,能帶給客戶新的互聯(lián)網(wǎng)理念。從網(wǎng)站結(jié)構(gòu)的規(guī)劃UI設(shè)計(jì)到用戶體驗(yàn)提高,創(chuàng)新互聯(lián)力求做到盡善盡美。
你可以直接定義一個(gè)long t = clock();printf("%ld",t);看下clock()這個(gè)函數(shù)執(zhí)行結(jié)果就知道!很簡(jiǎn)單哦!
程序運(yùn)行時(shí)間很短時(shí),返回0是很正常的。
可以試著運(yùn)行以下程序:
#includestdio.h
#includetime.h
main()
{for(int i=1;i0;i++);
printf("%d",clock());
}
C語(yǔ)言中變量是有作用域的,除非定義了全局變量,一般而言不同的函數(shù)體中的變量相互不可見。
因此,主函數(shù)中的t_start與leave_car()函數(shù)中的t_start并不是同一個(gè)變量!
修改如下:
將主函數(shù)中的
time_t t_start,t_end;
t_start=time(NULL);
兩個(gè)語(yǔ)句去掉,因?yàn)閷?duì)整個(gè)程序而言沒(méi)有實(shí)際的作用。
在leave_car()中
printf("yes");
前添加
t_start=time(NULL);
另外
printf("time is %f s\n",difftime(t_end,t_start);
少寫了一個(gè)反括號(hào)
clock() 獲取毫秒。程序執(zhí)行太快,時(shí)間差為0
這是用clock() 的例子:
void example_dt_ms()
{
clock_t tick1,tick2;
int i,j,k;
double dt;
tick1=clock(); //ms
//for (i=0;i1000;i++) for (j=0;j1000;j++) for (k=0;k100;k++) {};
wait_ms(2000);
tick2=clock();
dt = (double) (tick2 - tick1);
printf("==============\nexample_dt_ms:\n");
printf("dt = %lf ms\n",dt);
}
精確計(jì)時(shí)間差:
用QueryPerformanceCounter()函數(shù)返回當(dāng)時(shí)時(shí)鐘讀數(shù),計(jì)時(shí)開始用它得到開始讀數(shù),計(jì)時(shí)結(jié)束用它得到結(jié)束讀數(shù),兩個(gè)數(shù)相減是時(shí)間差讀數(shù)。讀數(shù)轉(zhuǎn)換為時(shí)間,要用QueryPerformanceFrequency()函數(shù)獲得時(shí)鐘頻率,讀數(shù)除以時(shí)鐘頻率,得時(shí)間,單位是秒。乘1000得毫秒。據(jù)說(shuō),這種方法比較精確。