注册 登录
编程论坛 C++教室

cout显示的结果为啥会滞后,想不懂想不懂,新人求解

and80506 发布于 2010-04-16 00:26, 575 次点击
这是我程序里截取出来调试用的代码,显示图形
****
|*|
****
明明显示第一行图形****的语句在pause前,但运行后执行完了pause语句才能显示第一行****。
如果没加pause语句设置断点调试,发现执行完了显示第二行图形|*|的语句后才能显示出第一行图形****。
cout显示一直滞后,不解。。。。。。难道跟循环有关吗
代码如下:
#include<iostream.h>
#include<windows.h>
#include "conio.h"
#include   <stdlib.h>
void gotoxy1(int a,int b)
{

for(int j=0;j<b;j++)
cout<<endl;
for(int i=0;i<a;i++)
cout<<" ";
system("pause");}
int x=10,y=10;
int main()
{

  gotoxy1(x,y);
  cout<<"****";
  gotoxy1(x,1);
  cout<<"|*|";
  gotoxy1(x,1);
  cout<<"****";
return 0;
 
}
2 回复
#2
and805062010-04-16 00:43
解决了,“查书,书上说endl是一个操纵符(manipulator),它不但实现了换行操作,而且还对输出缓冲区进行刷新。什么意思呢?原来在执行输出操作之后,数据并非立刻传到输出设备,而是先进入一个缓冲区,当适宜的时机(如设备空闲)后再由缓冲区传入,也可以通过操纵符flush,ends,或unitbuf进行强制刷新:”。

少了<<endl强制刷新缓冲区。
#3
cnfarer2010-04-16 07:41
“明明显示第一行图形****的语句在pause前,但运行后执行完了pause语句才能显示第一行****。”???
1