【掲示板ご利用上の注意】

 ※題名は具体的に!
 ※学校の課題の丸投げ禁止!
 ※ソースの添付は「HTML変換ツール」で字下げ!
 ※返信の引用は最小限に!
 ※環境(OSとコンパイラ)や症状は具体的に詳しく!
 ※返信付き投稿の削除は禁止!
 ※マルチポスト(多重投稿)は慎んで!

 詳しくはこちら


本当はこんなに大きく書きたくはないのですが、なかなか守っていただけなくて…。
 守ってくださいね。お願いします。(by管理人)

C言語ソース⇒HTML形式ツール掲示板2こちら


管理者用メニュー    ツリーに戻る    携帯用URL    ホームページ    ログ    タグ一覧

No.23451

一時待機関数について
投稿者---あきき(2005/10/02 21:18:04)


No.19239のRiSKさんの投稿へ質問
時間(処理)の一時停止についてですが、while文の条件で判らない点がありますので質問します。//の部分の意味がまったく分からないのでヒントを教えてください


#include <time.h>
#include <stdio.h>
int my_sleep(double second);  // No.19247参照
int main(void)
{
    time_t t;
    while ((t = time(NULL)) != (time_t)-1) {//この条件を日本語に直すと何と書いているのでしょうか
        puts(ctime(&t));
        if (!my_sleep(1)) {
            return 1;
        }
    }
    return 0;
}
int my_sleep(double second)
{
    time_t start, end;
    if ((start = time(NULL)) == (time_t)-1) {//if文の条件には何と書いているのでしょうか
        return 0;
    }
    do {
        if ((end = time(NULL)) == (time_t)-1) {//同上
            return 0;
        }
    } while (difftime(end, start) < second);
    return 1;
}



この投稿にコメントする

削除パスワード

発言に関する情報 題名 投稿番号 投稿者名 投稿日時
<子記事> Re:一時待機関数について 23452 まきじ 2005/10/02 21:38:13
<子記事> Re:一時待機関数について 23453 zero 2005/10/02 21:43:38


No.23452

Re:一時待機関数について
投稿者---まきじ(2005/10/02 21:38:13)


MSDN にはエラー時の戻り値は無いとありますが

http://www9.plala.or.jp/sgwr-t/lib/time.html

にはエラー時に -1 を戻すと記載されていますので
その様なソースになったのでしょう。

仮に、エラー時に -1 が戻るとしたら

>while ((t = time(NULL)) != (time_t)-1) {//この条件を日本語に直す

time() が成功してる間繰り返す。
time() の戻り値が time_t 型なので -1 もキャストしてます。

>if ((start = time(NULL)) == (time_t)-1) {
>if ((end = time(NULL)) == (time_t)-1) {

time() が成功したか否か。


この投稿にコメントする

削除パスワード

No.23457

Re:一時待機関数について(解決)
投稿者---あきき(2005/10/02 23:53:07)


>time() が成功してる間繰り返す。
>time() の戻り値が time_t 型なので -1 もキャストしてます。
>
while ( time() が成功してる間繰り返す。)ですね。

>>if ((start = time(NULL)) == (time_t)-1) {
>>if ((end = time(NULL)) == (time_t)-1) {
>
time(NULL)での返却値(start,end)がエラーかどうかですね

(time_t)-1の意味が分かって、すんなり理解できました。

まきじさんありがとうございます。




この投稿にコメントする

削除パスワード

No.23453

Re:一時待機関数について
投稿者---zero(2005/10/02 21:43:38)


私は、linuxを使っているのですが、man time(2)を参照したところ、
time()システムコールがエラーを起こした場合の返り値は、 ((time_t)-1)
を返すと書いてありました。


この投稿にコメントする

削除パスワード

管理者用メニュー    ツリーに戻る    携帯用URL    ホームページ    ログ    タグ一覧