C 时间和时钟每秒计算错误的时间

C 时间和时钟每秒计算错误的时间,c,posix,C,Posix,我对此程序有问题: #包括 #包括 #包括 #包括 #包括 #包括 #包括 #包括 时钟没有开始时间; 时钟无法获取用户时钟信号() { struct-tms-t; 泰晤士报; 返回t.tms_utime; } 无效开始计时() { start_time=get_user_ticks(); } 无效秒表() { clock_t stop_time=get_user_ticks(); 双刻度=停止时间-开始时间; 双s=滴答声/时钟每秒; printf(“运行时间:%fs\n”,s); } int

我对此程序有问题:

#包括
#包括
#包括
#包括
#包括
#包括
#包括
#包括
时钟没有开始时间;
时钟无法获取用户时钟信号()
{
struct-tms-t;
泰晤士报;
返回t.tms_utime;
}
无效开始计时()
{
start_time=get_user_ticks();
}
无效秒表()
{
clock_t stop_time=get_user_ticks();
双刻度=停止时间-开始时间;
双s=滴答声/时钟每秒;
printf(“运行时间:%fs\n”,s);
}
int main(int argc,字符**argv)
{
启动秒表();
整数和=0;
对于(长i=0;i<100000000;i++){
总和+=i;
}
printf(“总和:%i\n”,总和);
秒表;
返回0;
}
当我像这样编译和执行它时:
gcc-o0test.c;time./a.out
我得到以下输出:

sum: -1243309312
elapsed time: 0.000250s

real    0m2.509s
user    0m2.508s
sys     0m0.000s
为什么我的程序的输出错误了10000倍?如何使用
time
命令获得更高的精度


在64位Debian Buster上测试,gcc版本为8.3.0。

很好,因为这里错误地使用了
每秒时钟数<代码>时钟每秒
是将
clock()
的返回值转换为秒。但是注意:

应用程序应使用sysconf(_SC_CLK_TCK)来确定每秒的时钟滴答数,因为它可能因系统而异

注释
一节中也提到了这一点

做:

我怎样才能像时间命令一样获得更高的精度呢

使用
getrusage
。另见

double s = ticks / sysconf(_SC_CLK_TCK);