Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Hittar skillnaden mellan två gånger.
Syntax
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 );
Parameterar
timeEnd
Sluttid.
timeStart
Starttid.
Returvärde
difftime returnerar den förflutna tiden i sekunder, från timeStart till timeEnd. Värdet som returneras är ett flyttal med dubbel precision. Returvärdet kan vara 0, vilket indikerar ett fel.
Anmärkningar
Funktionen difftime beräknar skillnaden mellan de två angivna tidsvärdena timeStart och timeEnd.
Det angivna tidsvärdet måste passa inom intervallet time_t.
time_t är ett 64-bitars värde. Därför utökades intervallets slut från 23:59:59 januari 18, 2038, UTC till 23:59:59, 31 december 3000. Det lägre intervallet time_t är fortfarande midnatt, 1 januari 1970.
difftime är en infogad funktion som utvärderas till antingen _difftime32 eller _difftime64 beroende på om _USE_32BIT_TIME_T den har definierats. _difftime32 och _difftime64 kan användas direkt för att tvinga fram användning av en viss storlek av tidstypen.
Dessa funktioner verifierar sina parametrar. Om någon av parametrarna är noll eller negativ anropas den ogiltiga parameterhanteraren enligt beskrivningen i Parameterverifiering. Om körningen tillåts fortsätta returnerar dessa funktioner 0 och är inställda errno på EINVAL.
Som standard är den här funktionens globala tillstånd begränsat till programmet. Information om hur du ändrar det här beteendet finns i Globalt tillstånd i CRT.
Anmärkning
Om du använder Windows SDK version 10.0.26100.6901 och Visual Studio 2026 eller senare tillsammans, difftime är inte längre static inline (intern länkning). I stället är inline det (extern länkning).
För att återgå till det tidigare beteendet, #define _STATIC_INLINE_UCRT_FUNCTIONS=1 innan du inkluderar några CRT-huvuden. Som standard _STATIC_INLINE_UCRT_FUNCTIONS är värdet 0.
Den här ändringen ökar UCRT-överensstämmelsen med C++-standarden och förbättrar kompatibiliteten med C++-moduler.
Kravspecifikation
| Rutin | Obligatoriskt huvud |
|---|---|
difftime |
<time.h> |
_difftime32 |
<time.h> |
_difftime64 |
<time.h> |
Mer kompatibilitetsinformation finns i Kompatibilitet.
Example
// 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.
Se även
Stöd för matematik och flyttalsstöd
Tidshantering
time, , _time32_time64