gpt4 book ai didi

c - 在 C 中经过一段时间后突破 double

转载 作者:行者123 更新时间:2023-11-30 17:54:01 25 4
gpt4 key购买 nike

我有一个问题,我正在编写一个代码,通过强制执行我的作业所需的算法来找到完美的数字。我想看看 15 秒内范围有多远。我尝试使用 while 循环和闹钟,但似乎根本不起作用。我该如何从那里开始?

谢谢

这是我的代码:

#define _POSIX_SOURCE
#define _BSD_SOURCE

#include <signal.h>
#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>

volatile int stop=0;

void sigalrm_handler( int sig ){
stop = 1;
}

int main(int argc, char **argv){
struct sigaction sact;
int num_sent = 0;

sigemptyset(&sact.sa_mask);
sact.sa_flags = 0;
sact.sa_handler = sigalrm_handler;
sigaction(SIGALRM, &sact, NULL);

alarm(15); /* Request SIGALRM in 60 seconds */
while (!stop) {
for (;;){
for (;;){
}
}
}
printf("%d \n", num_sent);

exit(0);
}

最佳答案

即使警报被触发并将 stop 设置为非零值,您也不会注意到,因为您的 for 循环不会返回到外部 同时。您需要将条件应用于所有应停止的循环:

while (!stop) {
for (;!stop;){
for (;!stop;){
}
}
}

警报的替代方法是简单地检查您是否超过了某个时间点:

time_t end = time(0) + 15;
while (end < time(0)) {
for (;end < time(0);){
for (;end < time(0);){
}
}
}

关于c - 在 C 中经过一段时间后突破 double ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15319976/

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