c - gettimeofday 的时间未按应有的方式更新

标签 c gettimeofday

#include <stdio.h>
#include <sys/time.h>

int main()
{
   float time;
   struct timeval tv;
   gettimeofday( &tv, NULL );
   time = tv.tv_sec + ( tv.tv_usec / 1000000.0 );
   printf( "time: %f\n", time );
   return 0;
}

反复运行这段代码生成的二进制文件,我往往会得到相同的时间值:

$ ./a.out
time: 1348059520.000000
$ ./a.out
time: 1348059520.000000
$ ./a.out
time: 1348059520.000000

这种情况一直持续到几秒钟后我得到更新的时间值。

最佳答案

float 似乎太小,无法包含 tv.tv_sec + ( tv.tv_usec/1000000.0 ) 的结果。使用 double 代替:

#include <stdio.h>
#include <sys/time.h>

int main()
{
   double time;
   struct timeval tv;
   gettimeofday( &tv, NULL );
   time = tv.tv_sec + ( tv.tv_usec / 1000000.0 );
   printf( "time: %f\n", time );
   return 0;
}

关于c - gettimeofday 的时间未按应有的方式更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12495337/

相关文章:

c - MPI:Printf 语句未在正确的时间执行

javascript - 使用 Javascript 的周增量

C++ gettimeofday() 返回相同的值

c - 如何在滚动平均程序中输出第一个滚动平均值?

.net - 在 .NET 中以 FIPS 模式使用 OpenSSL

c - 使用结构、引用和 gettimeofday 函数的一些帮助

c - 如何从 C 中的 gettimeofday 获取日期时间?

c - 当包含 <linux/time.h> 时,“getnstimeofday”是系统调用中的隐式声明

c - for 循环 - 为什么打印 12 而不是 3?

c - 将 void 指针与 C 中的类型化指针进行比较(为了相等)是 UB 吗?