c++关于输出的问题

来源:百度知道 编辑:UC知道 时间:2024/05/18 05:31:26
#include<iostream.h>
#include<conio.h>
void main()
{
char ch;
cout<<"按下一个字符是:";
ch=getch();
cout<<endl<<"你键入的字符是:"<<ch<<endl;
}
我认为该程序运行到“cout”语句时应该出现屏幕并在上面显示:“按下一个字符是:”然后执行下一句也就是输入语句,最后在输出。但是当我运行时 先出现屏幕 上边什么也不显示 然后输入一个字符之后(假设输入的是a)屏幕上才显示:按下一个字符是:
你键入的字符是:a
好像是程序先运行ch=getch();然后才运行cout<<"按下一个字符是:"; 然后我又凑调整了一下程序 将cout<<"按下一个字符是:";和ch=getch();调换了一下顺序 程序运行后和原先的程序显示一样。我不知道怎么会这样 请大家多多指教
我用的是vc++6.0
各位好像没有看懂我的意思 我知道getche()是回显非缓冲输入 我的意思是程序的实际执行顺序好像是先执行ch=getch() 在执行cout语句 和代码程序的顺序不一致
为了验证我的猜测 我把ch=getch()改为ch=getche()执行之后屏幕之上仍是空的 输入一个字符(假设是a)之后屏幕才显示:
a按下一个字符是:
你键入的字符是:a
Press any key to continue

getch()在哪都是接收到东西再显示的
你把getch()改成 cin>>ch 就按顺序显示了
很简单啊 这样你再试试
#include<iostream.h>
#include<conio.h>
void main()
{
char ch;
cout<<"按下一个字符是:"<<;
cin>>ch;
cout<<endl<<"你键入的字符是:"<<ch<<endl;
}

我编译了一下没问题啊

是调用的输入函数的回显差别,你可以
把ch=getch(); 改成
ch=getche(); 试一下