在C中查找代码段的运行时

在C中查找代码段的运行时,c,runtime,clock,C,Runtime,Clock,下面的代码应该以for循环的秒数为单位找到运行时。看看其他资源,这应该可以做到,在for循环运行之后,从clock()中减去一个初始的clock()。你知道为什么代码不能像写的那样工作吗 #include <stdio.h> #include <time.h> //prototypes int rfact(int n); int temp = 0; main() { int n = 0; int i = 0; double result = 0

下面的代码应该以for循环的秒数为单位找到运行时。看看其他资源,这应该可以做到,在for循环运行之后,从
clock()
中减去一个初始的
clock()
。你知道为什么代码不能像写的那样工作吗

#include <stdio.h>
#include <time.h>

//prototypes
int rfact(int n);
int temp = 0;

main()
{
    int n = 0;
    int i = 0;
    double result = 0.0;
    clock_t t;
    printf("Enter a value for n: ");
    scanf("%i", &n);

    printf("n=%i\n", n);

    //get current time
    t = clock();

    //process factorial 2 million times
    for(i=0; i<2000000; i++)
    {
        rfact(n);
    }

    printf("n=%i\n", n);

    //get total time spent in the loop
    result = (double)((clock() - t)/CLOCKS_PER_SEC);

    //print result
    printf("runtime=%d\n", result);
}

//factorial calculation
int rfact(int n)
{

    if (n<=0)
    {
        return 1;
    }
    return n * rfact(n-1);
}
#包括
#包括
//原型
int-rfact(int-n);
内部温度=0;
main()
{
int n=0;
int i=0;
双结果=0.0;
时钟;
printf(“输入n:”的值);
scanf(“%i”和“&n”);
printf(“n=%i\n”,n);
//获取当前时间
t=时钟();
//过程阶乘200万次
对于(i=0;i
这应该是:

result = ((double)(clock() - t))/CLOCKS_PER_SEC;
否则,您将执行整数除法并将结果转换为双精度,这不是您想要的

此外:

应该是:

printf("runtime=%f\n", result);

你忘了问一个问题。这太尴尬了。当我运行它时,它在毫秒内完成后,我会得到一个很长的数字。每隔运行一次,输出就会在-343597384和1202590843之间切换:
printf(“runtime=%d\n”,result);
%d
表示
int
s,但
result
是浮点数。
printf("runtime=%d\n", result);
printf("runtime=%f\n", result);