#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/