質問

time_tメソッドから戻った2つのdifftime( time_t t1, time_t t2)の違いがdoubleとしての違いはなぜですか。精度の要件がどこから来たのかわかりません。

役に立ちましたか?

解決

time_tは単にarithmetic type capable of representing timesとしての標準で定義されています。

それはそれについて言うすべてについてです。整数である必要はありませんが、秒を表す必要はありません。それは10の倍数であることができないか、またはそれは10 -43 秒の解像度までの時間を表すことができる浮動小数点タイプであり得る。

C99 7.23.1 Components of timeからの引用は(わずかに差し引かれて):

宣言されたタイプはclock_ttime_tです。これは時間を表すことができる算術型です。 Clock_TとTIME_Tで表される時間の範囲と精度は実装定義されています。

それ故に盲目的に時間の違いを解決する人々:

delta = time_end - time_begin;
.

自分のコードがすべてのプラットフォームで機能しないことがわかります。

今すぐ私の頭の上に知らないが、エポック以来シンプルな秒ではないプラットフォームではなく、のようなのようなのように噛み合っていますが、Aを介してZは連続していますが、実際には必須ではなく、EBCDICを使用するメインフレーム製品ではうまく機能しません。そして、はい、彼らはまだ heavy 「60年代」以来、明らかに死んでいたにもかかわらず使用

C99根拠文書にはこれが言うべきことがあります:

型のタイプのタイプは、既存の慣行に従って、既存の慣習に従って、-1(「知らない」指示)、適切にキャストされている場合に、これらのタイプの値は算術演算です。

これらのタイプの算術特性は、実装を実装を可能にするために、範囲、正確化、およびそれらの意図されたアプリケーションに最も適した表現を選択することを可能にするために、標準によって定義されています。表現はいくつかの基本単位の数である必要はありません。実装は、整数型のサブフィールドとしての時間値の異なる成分を考えている可能性がある。

他のヒント

いくつかのEpochの始まりから秒を表す積分タイプとして、秒を表す整数型として考えられているにもかかわらず、一般的に正式に定義されていないので、それが完全に定義されていないため、DIFFTIMEの結果を携帯可能に使用することができませんでした。time_t。他の選択肢については:time_tが小さすぎます(intと同様)、longはポータブルではありません。

おそらく最も一般的な算術型だからです。そして、基礎となるtime_tがそれをサポートしている場合は、2番目の精度よりも優れています。

これの理由は、計算結果を使用できることを意味する2倍にすることで、型time_tの算術演算がないためです。

iow互いにtime_t値を追加すると、TIME_Tが符号なしintまたは通常のintとして定義されている場合は、動作が生じない、またはプラットフォームに応じて通常のintまたは通常のIntが発生する可能性があります。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top