std :: chrono乘以持续时间

时间:2014-02-26 11:13:38

标签: c++ c++11 chrono

考虑这个代码示例:

#include <chrono>
#include <iostream>

int main ( )
{
   using namespace std::chrono;

   system_clock::time_point s = system_clock::now();

   for (int i = 0; i < 1000000; ++i)
      std::cout << duration_cast<duration<double>>(system_clock::now() - s).count() << "\n";
}

我希望这能以秒为单位打印经过的时间。但它实际上打印的时间是数千秒(预期结果乘以0.001)。我做错了吗?

修改

由于seconds相当于duration<some-int-type>duration_cast<seconds>会得到相同的结果。

我用过gcc-4.7.3-r1

3 个答案:

答案 0 :(得分:2)

您的程序使用gcc 4.8.2和VS2013按预期工作。我认为这可能是旧gcc 4.7中的编译器错误

答案 1 :(得分:0)

maverik guessed this right:问题出在std::chronobinary incompatibility - libstdc ++的gcc-4.8版本和gcc-4.7在内部时间单位上没有达成一致。< / p>

答案 2 :(得分:-2)

你可以使用duration_cast&lt;秒>而不是duration_cast&lt;持续时间&lt;双&gt; &GT;