gpt4 book ai didi

c++ - 为什么这个值会多次变化?

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

我有一个用 C++ 编写的简单计时器/秒表。这是源代码:

#include<iostream>
#include <ctime>
#include <cstdlib>
int main(){
using namespace std;
//int hours,minutes,seconds=0;
int currHours=0,currMinutes=0,currSeconds=0;
clock_t startTime = clock();
while(true){
currSeconds = (clock() - startTime) / CLOCKS_PER_SEC;
std::cout<<currHours<<":"<<currMinutes<<":"<<currSeconds<<endl;
if(currSeconds==60){ //Make currSeconds to 10 to avoid waiting
currSeconds=0;
currMinutes++;
}
if(currMinutes==60){
currMinutes=0;
currHours++;
}
}
return 0;
}

然而,不是将 currMinutes 递增 1 并将 currSeconds 更改为 0,而是 currMinutes 递增 36。我认为这是因为 while 循环。我应该如何解决这个问题。

它改变的输出部分是:

0:0:9
0:0:9
0:0:9
0:0:9
0:0:10
0:1:10
0:2:10
0:3:10
0:4:10
0:5:10
0:6:10
0:7:10
0:8:10
0:9:10
0:10:10
0:11:10
0:12:10
0:13:10
0:14:10
0:15:10

最佳答案

您的循环运行速度比每秒一次快得多。这意味着您将评估

currSeconds = (clock() - startTime) / CLOCKS_PER_SEC;

每秒多次,因为您使用的是第二个分辨率,所以您的 if 语句每次都为真。

您要么需要使用更高的分辨率,检查您是否已经打印了那一秒,要么为循环添加一些等待时间,这样它就不会每秒运行多次。

关于c++ - 为什么这个值会多次变化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49195620/

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