為什么程式一執行clock()函式就給了最大值
uj5u.com熱心網友回復:
clockCalculates the processor time used by the calling process.
clock_t clock( void );
Routine Required Header Compatibility
clock <time.h> ANSI, Win 95, Win NT
For additional compatibility information, see Compatibility in the Introduction.
Libraries
LIBC.LIB Single thread static library, retail version
LIBCMT.LIB Multithread static library, retail version
MSVCRT.LIB Import library for MSVCRT.DLL, retail version
Return Value
clock returns the number of clock ticks of elapsed processor time. The returned value is the product of the amount of time that has elapsed since the start of a process and the value of the CLOCKS_PER_SEC constant. If the amount of elapsed time is unavailable, the function returns –1, cast as a clock_t.
Remarks
The clock function tells how much processor time the calling process has used. The time in seconds is approximated by dividing the clock return value by the value of the CLOCKS_PER_SEC constant. In other words, clock returns the number of processor timer ticks that have elapsed. A timer tick is approximately equal to 1/CLOCKS_PER_SEC second. In versions of Microsoft C before 6.0, the CLOCKS_PER_SEC constant was called CLK_TCK.
Example
/* CLOCK.C: This example prompts for how long
* the program is to run and then continuously
* displays the elapsed time for that period.
*/
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
void sleep( clock_t wait );
void main( void )
{
long i = 600000L;
clock_t start, finish;
double duration;
/* Delay for a specified time. */
printf( "Delay for three seconds\n" );
sleep( (clock_t)3 * CLOCKS_PER_SEC );
printf( "Done!\n" );
/* Measure the duration of an event. */
printf( "Time to do %ld empty loops is ", i );
start = clock();
while( i-- )
;
finish = clock();
duration = (double)(finish - start) / CLOCKS_PER_SEC;
printf( "%2.1f seconds\n", duration );
}
/* Pauses for a specified number of milliseconds. */
void sleep( clock_t wait )
{
clock_t goal;
goal = wait + clock();
while( goal > clock() )
;
}
Output
Delay for three seconds
Done!
Time to do 600000 empty loops is 0.1 seconds
Time Management Routines
See Also difftime, time
uj5u.com熱心網友回復:
clock函式我看了,但是我直接main函式里就直接呼叫了clock,然后一執行,顯示對應的clock_t的引數就是0xffffff,下面是對應的程式;int main(void)
{
clock_t start,end;
start=clock();
sleep(500);
end=clcok();
duration = (double)(end- start) / CLOCKS_PER_SEC;
printf("%d",duration );
}
結果顯示的是0 ;然后分步執行,查看對應的引數,start和end都是最大值0xffffff,
uj5u.com熱心網友回復:
https://fanyi.baidu.com/#en/zh/Return%20Value%0A%0Aclock%20returns%20the%20number%20of%20clock%20ticks%20of%20elapsed%20processor%20time.%20The%20returned%20value%20is%20the%20product%20of%20the%20amount%20of%20time%20that%20has%20elapsed%20since%20the%20start%20of%20a%20process%20and%20the%20value%20of%20the%20CLOCKS_PER_SEC%20constant.%20If%20the%20amount%20of%20elapsed%20time%20is%20unavailable%2C%20the%20function%20returns%20%E2%80%931%2C%20cast%20as%20a%20clock_t.
uj5u.com熱心網友回復:
//printf("%d",duration );
printf("%lf\n",duration );
duration定義成double型別,然后%lf輸出。
樓主的結果是0,因為不了解double和int型別資料在記憶體的存放是不一樣的。建議樓主了解一下~
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/268510.html
標籤:C語言
下一篇:編程問題
