std::chrono::system_clock 使用什么精度?

oli*_*ver 3 c++ time system-clock c++-chrono

这是我找到的一些代码:

std::cout << std::chrono::system_clock::now().time_since_epoch().count() << std::endl;
Run Code Online (Sandbox Code Playgroud)

1662563612364838407为我打印;所以看起来这打印了自 UNIX 纪元 (1970-01-01) 以来的纳秒数。

但这个精度能保证吗?我在https://en.cppreference.com/w/cpp/chrono/system_clock上没有找到任何迹象表明该值始终以纳秒为单位。是否有可能使用另一个编译器、操作系统或硬件返回微秒?

for*_*818 5

不,不能保证。您可以使用时钟period成员别名来获取以秒为单位的刻度周期:

#include <chrono>
#include <iostream>

int main() {
    std::cout << std::chrono::system_clock::period::num << " / " << std::chrono::system_clock::period::den;
}
Run Code Online (Sandbox Code Playgroud)

可能的输出:

1 / 1000000000
Run Code Online (Sandbox Code Playgroud)