C语言 计时函数时间差总为零
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言 计时函数时间差总为零相关的知识,希望对你有一定的参考价值。
#include<stdio.h>
#include<time.h>
void leave_car();
int main()
time_t t_start,t_end;
t_start=time(NULL);
leave_car();
return 0;
void leave_car()
int i,j;
time_t t_start,t_end;
printf("yse:");
scanf("%d",&i);
printf("%d\n",i);
t_end=time(NULL);
printf("time is %f s\n",difftime(t_end,t_start);
printf("yes:");
scanf("%d",&j);
printf("%d",j);
这是我写的简易情况,需要计时函数可以分成两个部分,一部分在主函数,一部分在分函数。但运行时时间总是为零,求解!!!
C语言中变量是有作用域的,除非定义了全局变量,一般而言不同的函数体中的变量相互不可见。
因此,主函数中的t_start与leave_car()函数中的t_start并不是同一个变量!
修改如下:
将主函数中的
time_t t_start,t_end;
t_start=time(NULL);
两个语句去掉,因为对整个程序而言没有实际的作用。
在leave_car()中
printf("yes");
前添加
t_start=time(NULL);
另外
printf("time is %f s\\n",difftime(t_end,t_start);
少写了一个反括号
你好,这样的话,如果我在主函数中加入一个while,switch语句,能否保证我在执行leave_car()函数以外的其它函数时,也在进行计时吗?
追答time()是从硬件中读取当前时间的,这个时间值只与硬件有关,所以只要两次读取的时间的变量是可见的,那么其差值一定是两次调用的时间间隔。
追问你好,能简单写一下程序吗,变量可见是什么意思?
追答比如:
int i;
i=5;
int b;
b=6;
b=b+i;
printf("%d,%d",i,b);
这里i和b就是可见的,其意思就是能够在一起使用和运算。
而以下两段代码:
int a=2;
a++;
int b;
b=15;
//以下代码是非法的
b+=a; //在此编译不能通过,因为对这段代码来说变量a没有定义,是不可见的。
#include<stdio.h>
#include<time.h>
time_t t_start,t_end; //global
void leave_car();
int main()
t_start=time(NULL); // 开始时间
leave_car();
return 0;
void leave_car()
int i,j;
//time_t t_start,t_end;
printf("yse:");
scanf("%d",&i);
printf("%d\n",i);
t_end=time(NULL); //结束时间
printf("time is %f s\n", difftime(t_end,t_start) ); // 加上小括号
printf("yes:");
scanf("%d",&j);
printf("%d",j);
追问
你好,这样会显示时间,但是数值很大,13456062349.0000000s 这种,求解!!
追答计算时间差以前,你有输入语句 scanf("%d",&i); 输出语句 printf("%d\n",i); 你不至于等了那么长时间吧。
本回答被提问者采纳以上是关于C语言 计时函数时间差总为零的主要内容,如果未能解决你的问题,请参考以下文章
C语言中有没有一种计时函数,能算出从程序中某段代码运行所花的时间?