在Linux中,for循环使用空白主体首先执行。 stange行为

时间:2016-11-06 16:20:33

标签: c++ time.h

首先我使用了这段代码:

void pause(long n)
{
  clock_t at=clock();
  while(clock()-at<=n)
    ;    
}

int main()
{
  cout<<1;
  pause(100000);
  cout<<2;
}
你期待什么? 输出将是1(一些时间间隔)2对吗? 没有..!! 它(有些时间间隔)12如何? 无论如何,我改变了暂停功能如下 -

void pause(long n)
{
  for(long i=1; i<=n*n; i++)
    ;
}

还是一样...... !! 为什么这个空白for循环首先执行? 但如果我这样做

  void pause(long n)
  {
   for(long i=1; i<=n*n; i++)
     cout<<0  ;
  }

现在它很高兴地执行输出为10000000000 ....(很多0).... 00002

1 个答案:

答案 0 :(得分:0)

你已经忘记了cout也是缓冲流。如果您想立即看到1和2,则需要拨打flush

cout.flush()

cout << flush;

请注意,std::endl也会隐式调用flush