Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Znajduje różnicę między dwoma razy.
Składnia
double difftime( time_t timeEnd, time_t timeStart ); // See note in remarks section about linkage
double _difftime32( __time32_t timeEnd, __time32_t timeStart );
double _difftime64( __time64_t timeEnd, __time64_t timeStart );
Parametry
timeEnd
Godzina zakończenia.
timeStart
Godzina rozpoczęcia.
Wartość zwracana
difftime zwraca czas, który upłynął w sekundach, od timeStart do timeEnd. Zwracana wartość jest liczbą zmiennoprzecinkową o podwójnej precyzji. Wartość zwracana może być 0 wskazująca błąd.
Uwagi
Funkcja oblicza różnicę między dwoma difftime podanymi wartościami timeStart czasu i timeEnd.
Podana wartość czasu musi mieścić się w zakresie time_t.
time_t jest wartością 64-bitową. W związku z tym koniec zakresu został przedłużony z 23:59:59 stycznia 18, 2038, UTC do 23:59:59, 31 grudnia 3000. Niższy zakres time_t to nadal północ, 1 stycznia 1970.
difftime jest funkcją śródliniową, która oblicza wartość _difftime32 lub _difftime64 w zależności od tego, czy _USE_32BIT_TIME_T jest zdefiniowana. _difftime32 i _difftime64 można użyć bezpośrednio do wymuszenia użycia określonego rozmiaru typu czasu.
Te funkcje weryfikują swoje parametry. Jeśli jeden z parametrów ma wartość zero lub ujemną, wywoływana jest nieprawidłowa procedura obsługi parametrów, zgodnie z opisem w temacie Weryfikacja parametru. Jeśli wykonanie może kontynuować, te funkcje zwracają wartość 0 i ustawioną errno na EINVALwartość .
Domyślnie stan globalny tej funkcji jest zakresem aplikacji. Aby zmienić to zachowanie, zobacz Stan globalny w CRT.
Uwaga / Notatka
Jeśli używasz zestawu Windows SDK w wersji 10.0.26100.6901 i Visual Studio 2026 lub nowszej, difftime nie będzie już static inline (połączenie wewnętrzne). Zamiast tego jest inline to (połączenie zewnętrzne).
Aby powrócić do poprzedniego zachowania, #define _STATIC_INLINE_UCRT_FUNCTIONS=1 przed dołączeniem dowolnych nagłówków CRT. Domyślnie _STATIC_INLINE_UCRT_FUNCTIONS jest ustawiona wartość 0.
Ta zmiana zwiększa zgodność UCRT ze standardem C++ i poprawia zgodność z modułami języka C++.
Wymagania
| Procedura | Wymagany nagłówek |
|---|---|
difftime |
<time.h> |
_difftime32 |
<time.h> |
_difftime64 |
<time.h> |
Aby uzyskać więcej informacji o zgodności, zobacz Zgodność.
Przykład
// crt_difftime.c
// This program calculates the amount of time
// needed to do a floating-point multiply 100 million times.
//
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <float.h>
double RangedRand( float range_min, float range_max)
{
// Generate random numbers in the half-closed interval
// [range_min, range_max). In other words,
// range_min <= random number < range_max
return ((double)rand() / (RAND_MAX + 1) * (range_max - range_min)
+ range_min);
}
int main( void )
{
time_t start, finish;
long loop;
double result, elapsed_time;
double arNums[3];
// Seed the random-number generator with the current time so that
// the numbers will be different every time we run.
srand( (unsigned)time( NULL ) );
arNums[0] = RangedRand(1, FLT_MAX);
arNums[1] = RangedRand(1, FLT_MAX);
arNums[2] = RangedRand(1, FLT_MAX);
printf( "Using floating point numbers %.5e %.5e %.5e\n", arNums[0], arNums[1], arNums[2] );
printf( "Multiplying 2 numbers 100 million times...\n" );
time( &start );
for( loop = 0; loop < 100000000; loop++ )
result = arNums[loop%3] * arNums[(loop+1)%3];
time( &finish );
elapsed_time = difftime( finish, start );
printf( "\nProgram takes %6.0f seconds.\n", elapsed_time );
}
Using random floating point numbers 1.04749e+038 2.01482e+038 1.72737e+038
Multiplying 2 floating point numbers 100 million times...
Program takes 3 seconds.
Zobacz też
Obsługa obliczeń matematycznych i zmiennoprzecinkowych
Zarządzanie czasem
time, , _time32_time64