我无法让我的函数计算经过了多少时间并相应地打印内容

问题描述

{{1}}

我不想做蛇游戏。这将基于时间。例如,屏幕将每5秒左右更新一次。为此,我使用了chrono库。我不习惯这种尝试或学习的方法,因此我可能会错过一些显而易见的东西。但是问题是主函数没有进入if块。因此,它对控制台没有任何影响。

我尝试调试(逐行运行)。实际上这并不像正在运行的程序那样,因为时间间隔会变长,但是每次都阻塞时会进入。另外,如果我将if条件设置为2纳秒,那么它也可以工作,但是由于cout函数无法快速打印,因此我需要使其长得多。在调试时,我还意识到“ StartingTime”和“ EndingTime”变量不会被初始化(除非我直接停止它们)。有趣的部分是Ifı在if块之后添加cout,一会儿程序开始进入If块。

解决方法

操作时:

chrono::duration_cast<chrono::milliseconds>(EndingTime - StartingTime).count();

没有足够的时间过去,毫秒数总是返回0。这意味着您总是向ElapsedTime添加0,并且永远不会超过10。

一种解决方法是使用较小的分辨率:

chrono::duration_cast<chrono::nanoseconds>(EndingTime - StartingTime).count();

如您在问题中提到的,并适当调整if条件。

但是,最好的解决方法是将ElapsedTimefloat更改为chrono::duration(具有适当的单位),因为这是变量代表的单位。这样一来,您就不必再对持续时间执行.count()

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...