Printf被for循环阻止

时间:2013-11-17 14:00:18

标签: c for-loop printf

我是一个电枢程序员,我编写了一个代码来计算执行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语句。为什么会发生这种情况。

2 个答案:

答案 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);

就在您要打印的行之后。