1

次のコード例を検討してください。

#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 を使用しました

4

3 に答える 3

2

gcc 4.8.2 と VS2013 の両方を使用して、プログラムが期待どおりに動作します。古いgcc 4.7のコンパイラのバグかもしれないと思います

于 2014-02-26T11:43:04.637 に答える
0

maverikは これを正しいと推測しました。問題は、内部のバイナリ非互換性std::chronoにありました- libstdc++ の gcc-4.8 バージョンと gcc-4.7 は、内部の時間単位に同意しませんでした。

于 2016-04-25T22:51:43.120 に答える