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

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

 詳しくはこちら


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

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


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

No.21785

time関数の型
投稿者---あきき(2005/07/07 08:03:46)


time関数にはtm型、time_t型、clock_t型と多いのですが
これらの型の長所・短所がわかりません。構造体形式関数でtpedefしているのだけなのじゃないですよね。だれかそのメリットを教えてもらえないでしょうか。


この投稿にコメントする

削除パスワード

発言に関する情報 題名 投稿番号 投稿者名 投稿日時
<子記事> Re:time関数の型 21786 まきじ 2005/07/07 09:03:02
<子記事> Re:time関数の型 21787 Blue 2005/07/07 09:16:22
<子記事> Re:time関数の型 21790 YuO 2005/07/07 11:02:02
<子記事> Re:time関数の型 21794 かずま 2005/07/08 03:24:02


No.21786

Re:time関数の型
投稿者---まきじ(2005/07/07 09:03:02)


>time関数にはtm型、time_t型、clock_t型と多いのですが
>構造体形式関数でtpedefしているのだけなのじゃないですよね。

tm は 年 月 日 などを、格納する変数を int 型で宣言してるだけ
です。
time_t は、typdef __int64 time_t と定義されています。
clock_t は、 typdef long clock_t と定義されています。

#コンパイラーによって違うかもしれませんが。


この投稿にコメントする

削除パスワード

No.21787

Re:time関数の型
投稿者---Blue(2005/07/07 09:16:22)


time関数内でtime_t型として扱っていれば、typede宣言を変更が容易になるということなのではないのでしょうか。
(詳しくは2038年問題を調べてみてください。)

例)
typedef long time_t;
     ↓
typedef __int64 time_t;
に変更

でも、関数内では time_t型 として扱っているため、影響範囲は少ない。
ユーザ側も同様。



この投稿にコメントする

削除パスワード

No.21790

Re:time関数の型
投稿者---YuO(2005/07/07 11:02:02)


>time関数にはtm型、time_t型、clock_t型と多いのですが
>これらの型の長所・短所がわかりません。構造体形式関数でtpedefしているのだけなのじゃないですよね。

tm型以外の型は,実際の型は処理系に委ねられています。
tm型に関しても,指定されたメンバが存在すればよいことになっています。
# 順序や追加のメンバがあってもそれは構わない。

これらの型は,特定の関数を利用するにあたって必要な型であって,
長所・短所というものは存在しません。
# するかもしれないが,これらの型相互の間には存在しない。


基本的に,ライブラリに渡す/返ってくる型はtime_tであり,
プログラムが使う型はtmになります。
# tmは時間の要素(時や分など)にわかれているため。

time_tは単位も起点も不明ですから,そのまま使うには不便です。

clock_tは時間を計測する場合に使います。
# time_tにもdifftimeが存在するが……。



この投稿にコメントする

削除パスワード

No.21794

Re:time関数の型
投稿者---かずま(2005/07/08 03:24:02)


> time関数にはtm型、time_t型、clock_t型と多いのですが
> これらの型の長所・短所がわかりません。

time 関数は、time_t time(time_t *t); とプロトタイプされていますから、
関係する型は time_t だけです。


> 構造体形式関数でtpedefしているのだけなのじゃないですよね。

「構造体形式関数」とは何ですか?


この投稿にコメントする

削除パスワード

No.21795

Re:time関数の型
投稿者---かずま(2005/07/08 09:48:12)


>> time関数にはtm型、time_t型、clock_t型と多いのですが
>> これらの型の長所・短所がわかりません。
>
> time 関数は、time_t time(time_t *t); とプロトタイプされていますから、
> 関係する型は time_t だけです。

「プロトタイプ宣言されて」と書いたつもりだったのに。

元の質問も、「<time.h> で宣言されている struct tm型、time_t型、clock_t型」
と解釈すべきでした。

長所・短所というより、それが何を表しているのかを理解しないといけません。

time_t型ですが、Linux の time(2) のマニュアルを見ると、「time は紀元 (1970年
1月1日00:00:00 UTC) からの経過時間を秒単位で返す。」と書かれています。

tm構造体については、Linux の ctime(3) を見ると分かります。
秒単位である time_t型を 年月日時分秒に変換したものです。

clock(3) を見ると、clock_t型は、プログラムの実行開始後の CPU時間で、単位は
CLOCKS_PER_SEC の値で示されます。Linux ではマイクロ秒ですが、Windows では
ミリ秒のようです。また、実際にプログラムを書いて試してみると分かりますが、
Linux では、getchar() など入力待ちをしている間は CPU時間に数えませんが、
Windows では、その待ち時間も含まれるようです。


この投稿にコメントする

削除パスワード

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