2012-09-23 68 views
0

我正在創建一個簡單的計時器類,它返回例如當前時間以毫秒爲單位。在Linux上我使用gettimeofday。我想知道這個函數應該有什麼樣的返回類型。即 double getMillis()uint64_t getMillis()等...我會說uint64_t可以保持更大的值,因此建議,雖然在谷歌搜索我看到很多不同的實現。創建一個Timer類,我應該使用什麼數據類型來保存值? (C/C++)

對此有何建議?

感謝

+0

'uint64_t'可以容納更大的值,然後'雙'??? 'double'可能(或可能不會)導致精度問題,但它可以明確地保持更大的值,然後是'uint64_t'。 – Grizzly

+0

灰熊,如果我記得他們都是8bytes,但雙簽署+真實。 – pollux

+2

在C++ 11中,我們有標題。你可以做'auto time = std :: chrono :: system_clock :: now()。time_since_epoch()。count();'。返回的類型是'std :: chrono :: system_clock :: rep'。無需特定於平臺的代碼。 –

回答

1

我會與無符號整數型自走毫秒數是一個計數。使加法和減法在不使用浮點的情況下也是可靠的。我使用的大多數實現都有無符號整數類型。

2

我推薦的數據類型以毫秒爲單位保存絕對時間戳int64_t,主要是因爲time_t是有符號的。

相關問題