在Linux中,首先执行体为空的for循环.斯坦格的行为

In Linux,for loop with blank body executes first. stange behaviour

本文关键字:循环 for Linux 执行      更新时间:2023-10-16

首先使用以下代码:

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....00002(0)…

您忘记了cout也是缓冲流。如果你想立即看到1和2,你需要调用flush

cout.flush()

cout << flush;

注意std::endl也隐式调用flush