2016-07-22 275 views
0
  • time_t変数が初期化されているかどうかをチェックする方法は?
  • difftime関数で2つのtime_t変数の差を計算したい場合、呼び出し前に手動で健全性チェックを実行する必要がありますか?
  • また、difftime戻り値がdoubleであるため、この値が0.0より大きいかどうかを確認するにはどうすればよいですか? time_tの変数が初期化されているかどうかを確認する方法

おかげtime_t変数の初期化をチェック

+0

コーディングを行う人は、変数が初期化されているかどうかを知る必要があります。それ以外の場合は、一般的な原則として、完全に入力を制御していない場合、正当性チェックは常にあなたの責任です。 0.0より大きいかどうかを調べるには、if(difftime(t2、t1)> 0.0){// your code}を実行します。 –

答えて

1

実際に初期化されているかどうかを確認する方法はありません。それが初期化されていなかった場合、それはメモリ位置に存在する任意のランダムな値にすることができます。あなたはそれが初期化されていることを知っている方法でプログラムするべきです。

私は2つのtime_tの差が difftime機能をvarsの計算したい場合は、私は手動でinvokation前に任意の健全性チェック を実行する必要がありますか?

私はそうは思わない。 time_tは整数型なので、常に有効な状態になります(整数は浮動小数点数のように整数ではありません)。したがって、無効な出力を得る理由はありません。私はtime_tの値があなたが解決しているprolbemのコンテキストを考えれば意味があることを確認することができたと思います。 2000年前の時を参照するのは意味をなさないかもしれません。

また、difftimeの戻り値がdoubleであるため、 の値が0.0より大きいかどうかを確認するにはどうすればよいですか?

if文を使用します。 if(dt > 0.0) {...}

+0

サニティチェック:恐らく 't!= -1'。 -1は 'time()'のエラー戻り値です。 BTW 'time_t'は、Cによって整数値であると定義されていません。これは整数型またはFP型でなければなりません。 – chux

0

READ THIS:cppreferenceのでcppreference page on time_t

非常に使用可能な情報はまた、C.

  1. は基本的に、time_tは、しばしば、64ビット整数として実現されるカバー。つまり、デフォルトの初期化は、の場合と同じです(平文の場合はint)。値を格納するために「初期化」する必要はありません。

  2. いつもCと同じように、実際には使用できないものに設定されている正当な値に設定されている無効な操作を行っていないかどうかは実際には確認できません初期化されていない。

  3. difftime > 0。なぜそれは動作しませんか? doubleは、〜100,000,000,000,000までの整数値を正確に表すことができます。それは300万年の時差です。

+0

"基本的に、time_tはしばしば64ビットの整数として実装されています。" CはFPを含む他の多くの型を許します。 – chux

+0

@chuxこの点には関係ありません。また、私はいつもではなく、「しばしば」を使用しました。 –