2012-12-13 39 views
17

2 tane değişken var time_t - varEnd ve varStart. Şimdi onlara Ya arasındaki farkı görmek için bendifftime ile '-' arasındaki fark nedir?

varEnd - varStart; 

veya

difftime(varEnd, varStart); 

yapabilir ve her iki saniye sayısını döndürür.

Fark ettikleri takdirde lütfen bana bildirin. veya hangisi tavsiye edilir?

+2

Bu neden C++ olarak etiketlendi? –

+0

@PaulR: 'difftime()' hem C hem de C++ 'da bulunur. –

+1

Büyük olasılıkla bunu Pascal veya FORTRAN olarak da adlandırabilirsiniz, ancak bunu Pascal veya FORTRAN sorusu haline getirmez. ;) –

cevap

27

dil time_t kez temsil edebilen bir aritmetik türü olduğunu belirtir. Belirli bir şekilde zamanları temsil etmesini gerektirmez.

time_t, bir andan bu yana geçen süreyi saniye cinsinden temsil ediyorsa, - işleci, iki time_t değerleri arasındaki farkı saniye cinsinden doğru olarak hesaplayacaktır.

bu (ayrıntı bir milisaniye ise bir time_t bit, yıl, ay, gün temsil eden bir gruba ayrılır ise diyelim ki, ya da), daha sonra - operatör anlamsız sonuçlar olabilir değilse.

difftime() işlevi, time_t saatinin bir zamanı nasıl temsil ettiğini "bilir" ve bu bilgileri, saniye cinsinden farkı hesaplamak için kullanır. Çoğu uygulamalarda, basit çıkarma ve difftime() günü

aynı şeyi yapmak için ne - ama sadece difftime()tüm uygulamaları üzerinde düzgün çalışması için garanti edilir.

Bir başka fark: "-"time_t ilgili değerler tip time_t bir sonucu verir ise, kayan nokta tipi double bir sonuç verir difftime(). Çoğu durumda sonuç örtülü olarak atadığınız türün türüne dönüştürülür, ancak time_t imzasız bir tamsayı türü olsaydı, daha sonraki bir zamanın daha önceki bir zamandan çıkarılması, negatif bir değer yerine çok büyük bir değer verir. . Gördüğüm her sistem, time_t'u 32 bit veya 64 bit imzalı tamsayı türü olarak uygular, ancak imzasız bir tür kullanılmasına izin verilir - time_t değerlerinin basit bir şekilde çıkarılmasının bir anlamı daha önemli değildir.

1

difftime() bir kayan nokta döndürür, yalnızca onları çıkarırsanız bunları önce ikiye katlamadığınız sürece çıkarmaz.
kaynak: here

+0

Evet, ancak her iki "time_t" işlenenini çıkarmadan önce "double" 'a çevirmek bile' difftime 'ile aynı şeyi yapmanın garantisini vermez - bu yüzden' difftime 'var. Cevabımı gör. –

İlgili konular