例如在以下程序中:
#include<fstream.h>
#include<conio.h>
void main()
{
int ctr;   //For loop counter
char letters[5];
cout<<"please type five letters\n";     //提示语句
for(ctr=0;ctr<5;ctr++)
{
letters[ctr]=getch();   //输入字符
}
for(ctr=0;ctr<5;ctr++)
{
putch(letters[ctr]);
}
ofstream prn("PRN");
for(ctr=0;ctr<5;ctr++)
{
prn.put(letters[ctr]);
}
return;
}在vs.net中的VC++中编译总是{输入字符}后,才把{提示的问题}和{结果}同时显示出来.在win32的环境下,而且{结果}在{提示的问题}的前面!!!而正常情况下,应该是先显示{提示的问题},我输入{字符},屏幕最后显示{结果},
在BC++ 5.0就是这样正常通过,而vc则不是.
在看下面这个程序:
#include<iostream.h>
main()
{
int i,b;
char name[25];
cout<<"what is your name?\n";       //屏幕先显示问题
    for(i=1;i<30000;i++)                         //等待几秒
{
for(b=1;b<30000;b++);
}
cout<<"please type in!";         //再次显示提示
cin>>name;                      //输入
cout<<name;                     //显示答案
return 0;
}
可vc.net中并不是像程序解释那样,而是先等待几秒,在把问题和提示同时显示在屏幕.而BC++ 5.0就是像程序的解释那样.不知这是vs.net的问题,还是它的设置问题,希望有人能给予解答!!谢谢了

解决方案 »

  1.   

    for(b=1;b<30000;b++);--空恐怕 被compiler优化了。。
      

  2.   

    我也不知道,但我用putchar输出----替代cout便可以在要求输入之前显示提示信息.可能是cout的执行有什么说法吧,我跟踪过运行顺序,是先执行cont可是并不显示,后面的循环,在其后执行,在你没有输入的情况下也照样执行...不得其解....
      

  3.   

    恐怕是优化掉了!
    你可以关闭优化选项在试试!by the way:
    的确好像是VC更加大胆一些,有些东西比BC优化的“过分”了!
      

  4.   

    for(b=1;b<30000;b++);--空恐怕 被compiler优化了。。
      

  5.   

    我再补充一点,就是如果使用C++的东西应该配套使用,如cout---cin
    如果上例中这样使用就好了,不会出现先后显示颠倒的问题,但也有问题,你可以自己试试就知道了.哈哈~~~
      

  6.   

    或者是,VS的I/O的缓冲的原因吧.