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.
Bu neden C++ olarak etiketlendi? –
@PaulR: 'difftime()' hem C hem de C++ 'da bulunur. –
Büyük olasılıkla bunu Pascal veya FORTRAN olarak da adlandırabilirsiniz, ancak bunu Pascal veya FORTRAN sorusu haline getirmez. ;) –