gpt4 book ai didi

c++ - 条件语句永远不会在 Chrono Program 中触发

转载 作者:搜寻专家 更新时间:2023-10-31 02:13:26 27 4
gpt4 key购买 nike

摘要:

出于实验目的,我用 C++ 编写了一个处理 Chrono 库的简短程序。我希望 CPU 在一秒钟内尽可能多地计数,显示它计数到的值,然后在无限循环中重复该过程。

当前代码:

#include <iostream>
#include <chrono>

int counter()
{
int num = 0;
auto startTime = std::chrono::system_clock::now();

while (true)
{
num++;
auto currentTime = std::chrono::system_clock::now();
if (std::chrono::duration_cast<std::chrono::seconds>(currentTime - startTime).count() == 1)
return num;
}
}

int main()
{
while(true)
std::cout << "You've counted to " << counter() << "in one second!";
return 0;
}

问题:

我程序中的条件语句:

if (std::chrono::duration_cast<std::chrono::seconds>(currentTime - startTime).count() == 1)

未被触发,因为 currentTime - startTime 的类型转换值既不等于也不超过 1。这可以通过将运算符“==”替换为“<”来证明,这会输出不正确的结果,而不是什么都不输出。我不明白为什么不满足条件;如果这个程序在某一时刻从系统时钟收集时间,然后反复将它与当前时间进行比较,差值的整数值不应该在某一时刻等于 1 吗?

最佳答案

您遇到的是 cout 问题,而不是 chrono 问题。问题是您正在使用 cout 进行打印,如果您不喜欢它,它不会刷新。

cerr 将刷新换行符。更改为 cerr 并添加一个 \n,您将得到您期望的结果。

std::cerr << "You've counted to " << counter() << "in one second!\n";

关于c++ - 条件语句永远不会在 Chrono Program 中触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41455072/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com