C 参数为float的sleep()不起作用

C 参数为float的sleep()不起作用,c,floating-point,sleep,C,Floating Point,Sleep,我创建了简单的代码来测试sleep()函数。在C 我尝试执行以下代码,程序在终止前等待5秒: #include <stdlib.h> #include <stdio.h> int main(){ int n=0; for (n=1;n<=10;n++){ sleep(.5); } return 0; } #包括 #包括 int main(){ int n=0; 对于(n=1;nTypeman3 sleep并阅读它

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

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

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

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

对于(n=1;nType
man3 sleep
并阅读它

sleep
需要一个
unsigned int
参数。它只能睡眠整秒

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

这是假设
sleep
函数的声明是可见的。在您的程序中,您没有所需的
#include
。在C99或更高版本中,调用没有可见声明的函数是非法的。在C90中,编译器将对函数进行某些假设。在这种情况下,您的程序的行为是不可见的罚款

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


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

我很惊讶1k用户的研究如此之少。快速查看文档会发现,
sleep
以整数为参数。在这里也很容易找到第二个问题的答案。另外,可能重复,请阅读标记说明。调试标记完全不适合t他的问题。你没有得到一个关于
sleep
的暗示声明的警告吗?请不要这么想,但这可能是投票失败的一个原因。
#include <stdlib.h>
#include <stdio.h>

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