考虑这个代码示例:
#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
答案 0 :(得分:2)
您的程序使用gcc 4.8.2和VS2013按预期工作。我认为这可能是旧gcc 4.7中的编译器错误
答案 1 :(得分:0)
maverik guessed this right:问题出在std::chrono
内binary incompatibility - libstdc ++的gcc-4.8版本和gcc-4.7在内部时间单位上没有达成一致。< / p>
答案 2 :(得分:-2)
你可以使用duration_cast&lt;秒>而不是duration_cast&lt;持续时间&lt;双&gt; &GT;