gpt4 book ai didi

c - 固定时间运行循环 : Counter returns different number on every run

转载 作者:太空宇宙 更新时间:2023-11-04 07:44:44 24 4
gpt4 key购买 nike

我正在尝试在特定时间段内运行一个循环。在此期间设置一个计数器变量并将其递增 1。目标是查看运行期间计数器变量的最终值是多少。我希望在同一运行期间获得相同的计数器值。好像不是这样的。当我以相同的持续时间运行相同的循环时,计数器变量每次都返回不同的数字。我从 isayme 借用这段代码.

#include <stdio.h>
#include <time.h>
#include <unistd.h>

int main(void)
{
time_t endwait;
time_t start = time(NULL);
time_t seconds = 1; // end loop after this time has elapsed
endwait = start + seconds;
int counter =0;
while (1){
if (start < endwait){
counter=counter+1;
start = time(NULL);
}
else
break;
}
printf("Counter Value: %d", counter);
return 0;
}

不同运行的输出:

Counter Value: 99742750

Counter Value: 30134682

Counter Value: 30596672

所以,我的问题是

  1. 如何在固定的循环时间内获得相同的计数器变量?

  2. 我试图将变量 seconds 设置为小于 1,但结果为 0。那么,如何设置这个时间的分数?

提前谢谢你。

最佳答案

在 POSIX 系统上 the time() function返回以秒为单位的时间:

The time() function shall return the value of time in seconds since the Epoch.

Windows is similar :

Returns the time as seconds elapsed since midnight, January 1, 1970, or -1 in the case of an error.

在您的流程中对 time() 的第一次调用实际上发生在 一秒钟内的随机时刻,然后您的循环一直运行到 的返回值>time() 变化。

因此,您的循环将运行一段随机的时间长度,从一秒的一小部分一直到大约一整秒。在循环中第一次调用 time() 可能会返回一个导致循环结束的值,或者您的循环可能会运行大约整整一秒。或者两者之间的任何时间长度。

这是假设您的计算机上没有运行任何其他程序。这可以而且也会改变您的结果。

关于c - 固定时间运行循环 : Counter returns different number on every run,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58086961/

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