56789098.9899のような数字があります。この問題を解決するには、符号なし整数のみを受け付けるusleep()で使用しますか?doubleをintに変換してusleepの引数として使用する方法はありますか?
sleeptime = time_alloted - time_taken。
ここスリープ時間はunsigned int型変数です。
56789098.9899のような数字があります。この問題を解決するには、符号なし整数のみを受け付けるusleep()で使用しますか?doubleをintに変換してusleepの引数として使用する方法はありますか?
sleeptime = time_alloted - time_taken。
ここスリープ時間はunsigned int型変数です。
まず、usleep
はusenconds_t
arguementを受け入れ、そしてuseconds_t
はunsigned int
である必要はありません。ここにはusleep
の仕様を参照してください。 http://pubs.opengroup.org/onlinepubs/7908799/xsh/usleep.html
第2に、引数が1,000,000を超えてはならないことに注意してください。また、失敗する可能性があるので、戻り値usleep
を確認することを忘れないでください。
次にタイプキャストを使用するだけで十分です。
それが動作するはずですので、次のコードは、私のために正常に動作 「としてある」:
#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;
}
最初の変数が常に2番目の変数よりも大きいと仮定しているので、これはうまく動作します。最初の変数を大きくしてからsee.Alsoという結果を得ます。つまり、sleeptimeはif > 0)then this this ...あなたのコードは確実に壊れてしまいます。 – Phoenix225
私はそれをusleep(sleeptime)として使用する必要があります。 – Phoenix225
Cが関わっている限り、私は長い時間を過ごしましたが、試してみました。 unsigned long int sleeptime; sleeptime = time_alloted-time_taken; – Terry
「うまくいく」はずです。どうしたの? –