C 如何将double转换为int以在usleep中将其用作参数?

C 如何将double转换为int以在usleep中将其用作参数?,c,C,我有一个类似于56789098.9899的数字,我想在usleep()中使用它,它只接受一个无符号整数作为参数。如何解决这个问题 睡眠时间=分配的时间-占用的时间。 这里的sleeptime是一个无符号int变量。它应该“按原样”工作 所以下面的代码对我来说很好: #include "stdio.h" void func(unsigned int i) { printf("Going to sleep for %d\n", i); usleep(i); } int main(

我有一个类似于56789098.9899的数字,我想在usleep()中使用它,它只接受一个无符号整数作为参数。如何解决这个问题

睡眠时间=分配的时间-占用的时间。

这里的sleeptime是一个无符号int变量。

它应该“按原样”工作 所以下面的代码对我来说很好:

#include "stdio.h"

void func(unsigned int i)
{
    printf("Going to sleep for %d\n", i);
    usleep(i);
}

int main(void)
{
   printf("hello world\n");
   unsigned int sleep;
   sleep = 56789098.9888 - 124234.45345;
   func(sleep);
   return 0;
}

首先,
usleep
接受
usenconds\u t
参数,并且
useconds\u t
不必是
unsigned int
。请参见此处的usleep规范。

第二,注意参数不能大于1000000。还记得检查
usleep
的返回值,因为它可能会失败


那么只需使用类型转换就足够了。

我必须将其用作usleep(睡眠时间);就C而言,我已经有很长时间了,但是你试过了吗;无符号长整型睡眠时间;睡眠时间=分配的时间和花费的时间;它应该“起作用”。有什么问题吗?如果有些东西不起作用,你应该解释怎么做。复制错误消息或说明实际行为与您预期的不同。它对您有效,因为您假设第一个变量始终大于第二个变量。请尝试将第一个变量设置为更大,然后查看。此外,我获得的结果ie sleeptime在if条件中使用,例如if(睡眠时间>0)然后执行此操作…您的代码肯定会中断。