我是一个电枢程序员,我编写了一个代码来计算执行for语句所花费的时间。代码如下:
#include <stdio.h>
#include <stdlib.h>
#include <sys/time.h>
#include <unistd.h>
int main()
{
unsigned long long int i;
int a,b;
struct timeval st,end;
printf("\nEnter two numbers to multiply");
scanf("%d",&a);
scanf("%d",&b);
printf("\nOh, wait! I have to count upto 4294967295 before i multiply");
gettimeofday(&st,NULL);
for(i=1;i<4294967295;i++);
printf("count : %lld",i);
gettimeofday(&end,NULL);
printf("Time elapsed: %lu:%lu\n",end.tv_sec-st.tv_sec,end.tv_usec-st.tv_usec);
printf("\n");
return 0;
}
for循环需要约13秒才能完成。但是,只有在for循环完成执行后才执行printf语句。为什么会发生这种情况。
答案 0 :(得分:6)
从;
循环结束时删除for
。
for(i=1;i<4294967295;i++);
↑ Remove this semicolon.
应该是
for(i=1;i<4294967295;i++)
{
printf("count : %lld",i);
}
答案 1 :(得分:1)
标准输出流并不总是直接刷新(即写入屏幕),
试
fflush(stdout);
就在您要打印的行之后。