2012-03-28 24 views
0

我有一個數字像56789098.9899我想在usleep()中使用它只接受一個無符號整數作爲argument.how來解決這個問題?如何將double轉換爲int以將其用作usleep中的參數?

sleeptime = time_alloted - time_taken。

這裏休眠時間無符號整型變量。

+0

我必須使用它作爲睡眠(睡眠時間); – Phoenix225 2012-03-28 05:33:46

+0

就C而言,對我而言已經很長時間了,但是你有沒有嘗試過; unsigned long int sleeptime; sleeptime = time_alloted-time_taken; – Terry 2012-03-28 05:38:40

+1

它應該「只是工作」。有什麼問題? – 2012-03-28 05:39:22

回答

0

首先,usleep接受usenconds_t arguement和useconds_t不必是unsigned int。請參閱usleep規格。 http://pubs.opengroup.org/onlinepubs/7908799/xsh/usleep.html

其次,請注意參數不能大於1,000,000。並且請記住檢查返回值usleep,因爲它可能會失敗。

然後只需使用類型轉換就足夠了。

0

它應該工作「原樣」 所以下面的代碼工作正常,我:

#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; 
} 
+0

它適用於你,因爲你假設第一個變量總是大於第二個變量。試着讓第一個變量更大,然後see.Also結果我得到,即睡眠時間內使用if條件中的if條件如睡眠時間> 0)然後執行此操作...您的代碼肯定會中斷。 – Phoenix225 2012-04-17 11:56:29

相關問題