2012-03-28 11 views
0

56789098.9899のような数字があります。この問題を解決するには、符号なし整数のみを受け付けるusleep()で使用しますか?doubleをintに変換してusleepの引数として使用する方法はありますか?

sleeptime = time_alloted - time_taken。

ここスリープ時間unsigned int型変数です。

+0

私はそれをusleep(sleeptime)として使用する必要があります。 – Phoenix225

+0

Cが関わっている限り、私は長い時間を過ごしましたが、試してみました。 unsigned long int sleeptime; sleeptime = time_alloted-time_taken; – Terry

+1

「うまくいく」はずです。どうしたの? –

答えて

0

まず、usleepusenconds_t arguementを受け入れ、そしてuseconds_tunsigned intである必要はありません。ここにはusleepの仕様を参照してください。 http://pubs.opengroup.org/onlinepubs/7908799/xsh/usleep.html

第2に、引数が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

最初の変数が常に2番目の変数よりも大きいと仮定しているので、これはうまく動作します。最初の変数を大きくしてからsee.Alsoという結果を得ます。つまり、sleeptimeはif > 0)then this this ...あなたのコードは確実に壊れてしまいます。 – Phoenix225