time_t型の2つの変数(varEndとvarStart)があります。今、それらの違いを見るためにどちらか私はすることができます
varEnd - varStart;
また
difftime(varEnd, varStart);
両方とも秒数を返します。
違いがあれば教えてください。またはどちらが推奨されますか?
言語は、それtime_tが時間を表すことができる算術型であることを指定します。特定の方法で時間を表す必要はありません。
time_tある瞬間からの秒数として時間を表す場合、-オペレーターは2つの値の秒単位の差を正しく計算しtime_tます。
そうでない場合(たとえば、粒度が1ミリ秒の場合、またはaのビットがtime_t年、月、日などを表すグループに分割されている場合)、-演算子は無意味な結果を生成する可能性があります。
difftime()一方、この関数は、aがどのようtime_tに時間を表すかを「認識」し、その情報を使用して秒単位の差を計算します。
ほとんどの実装では、単純な減算と同じことを実行しますが、すべての実装で正しく機能することが保証されているdifftime()だけです。difftime()
別の違い:difftime()浮動小数点型の結果を返しますが、doubleon"-"のtime_t値は型の結果を返しますtime_t。ほとんどの場合、結果は割り当てられたタイプに暗黙的に変換されますtime_tが、符号なし整数タイプの場合は、前の時間から後の時間を減算すると、負の値ではなく非常に大きな値が生成されます。私が見たすべてのシステムはtime_t、32ビットまたは64ビットの符号付き整数型として実装されていますが、符号なし型の使用は許可されてtime_tいます。値の単純な減算が必ずしも意味のあるものではないもう1つの理由です。
difftime()は浮動小数点doubleを返しますが、最初にdoubleにキャストしない限り、それらを減算しても返されません。
ソース:ここ