加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

C 11 std :: chrono现在减去最小

发布时间:2020-12-16 06:44:03 所属栏目:百科 来源:网络整理
导读:我觉得我对这个有点疯狂,但是对我来说并不合适.在我看来,如果从从now()调用返回的任何时间点减去最小时间点,我应该总是得到一个正的持续时间,但这不会发生. #include chrono#include iostreamtypedef std::chrono::steady_clock myclock;int main(int argc,c
我觉得我对这个有点疯狂,但是对我来说并不合适.在我看来,如果从从now()调用返回的任何时间点减去最小时间点,我应该总是得到一个正的持续时间,但这不会发生.
#include <chrono>
#include <iostream>

typedef std::chrono::steady_clock myclock;

int main(int argc,char **argv) {
        myclock::time_point min = myclock::time_point::min();
        myclock::time_point now = myclock::now();
        auto millis = std::chrono::duration_cast<std::chrono::milliseconds>(now - min).count();
        std::cout << millis << std::endl;
}

为什么打印一个负整数而不是一个正整数? (ang 3.3或g 4.8.1)

解决方法

如上所述,这是溢出的结果.请记住,符号类型可以表示的最小值与最大值的大小相同.如果现在是正的,那么现在和最小值之间的差异将明显比最大的更大的幅度,这意味着它具有比类型最大值可以代表的更大的幅度.

如果你想保证一个正的持续时间,而不是使用最小值,你可以改为使用一个稳定的时钟,然后使用程序开始时间作为基础.内置的时钟周期都被指定,使得持续时间应该能够代表至少几百年的范围,因此除非您的程序运行时间长于此,否则您将获得积极的持续时间.

另一个选择是选择一个时代,那个时代已知是过去的,只是说

Clock::now().time_since_epoch();

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读