gpt4 book ai didi

c - sleep() 以 float 作为参数不起作用

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

我创建了简单的代码来测试 sleep() 函数。在 C 中。

我尝试执行以下代码,让程序在终止前等待 5 秒:

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

int main(){
int n=0;
for (n=1;n<=10;n++){
sleep(.5);
}
return 0;
}

但是它会等待大约 100 毫秒。嗯,肯定不到一秒。

现在,如果我执行以下代码:

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

int main(){
int n=0;
for (n=1;n<=10;n++){
sleep(1);
}
return 0;
}

程序按预期运行(退出前等待 10 秒)。

为什么参数为 float 时sleep()无法正常执行?

与我可以用来代替 sleep 的所有系统兼容的绝对最佳功能是什么?

最佳答案

类型man 3 sleep并阅读它。

sleep需要unsigned int争论。它只能休眠整数秒。

如果您向其传递不同数字类型的参数,它会隐式转换为 unsigned int 。将浮点值转换为整数类型会截断。

假设 sleep 的声明功能可见。在您的程序中,您没有所需的 #include <unistd.h> 。在 C99 或更高版本中,调用没有可见声明的函数是非法的。在C90中,编译器会对函数做出某些假设。在这种情况下,您的程序的行为是未定义的。

所以sleep(.5)相当于 sleep(0) .

在系统文档中搜索 usleep (微秒)或 nanosleep (纳秒)。

关于c - sleep() 以 float 作为参数不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51110824/

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