time.h 中的 C - time() 每 128 秒更新一次它的值

C - time() in time.h updates its value every 128 seconds

我写了一个简单的代码来测试 time.h 中的函数 time():

// time-test.c
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main()
{
    float now = (float)time(NULL);
    fprintf(stdout, "time() returns: %f\n", now);

    return 0;
}

但是当我 运行 这段代码时,我发现 time() 只有 'refreshes' 它的值每 128 seconds.So 我的输出如下

user@ubuntu:~/workspace$ gcc -o time-test time-test.c
user@ubuntu:~/workspace$ ./time-test
time() returns: 1585473408.000000
user@ubuntu:~/workspace$ ./time-test
time() returns: 1585473408.000000
user@ubuntu:~/workspace$ ./time-test
time() returns: 1585473408.000000

再过一会儿,

user@ubuntu:~/workspace$ ./time-test
time() returns: 1585473408.000000
user@ubuntu:~/workspace$ ./time-test
time() returns: 1585473536.000000

如果你检查一下,你实际上可以看到 time() returns 的值也是 128 的倍数。我认为这可能是操作系统故意这样做的,但我不确定。

有没有办法让值每1秒更新一次?任何帮助或推动正确的方向将不胜感激!

P.S。我在 Windows 上使用 Ubuntu 18.04 和 VMWare Workstation Pro。

在 POSIX 系统(如 Linux 或 macOS)上 time 函数 returns 自 1970 年 1 月 1 日午夜以来的秒数。这个数字现在是远远超过 10 亿(并且很快接近 2,带符号的 32 位整数将无法处理,Y2k38 problem)。

单精度浮点类型(float 的精度)不足以以如此高的精度或分辨率处理如此大的数字。

使用双精度浮点类型(如 double)或适当的 time_t 整数类型。