请C++高手帮忙分析程序运行出现这样结果的原因: 谢谢!

2024年11月20日 21:19
有2个网友回答
网友(1):

老大,以后别加“高手”,你这种问题如果有“高手”给你答,他自己都觉得掉价儿。

我不是高手,所以我告诉你:
cin.get()没接收没接收回车“换行符”,可是cin.get()是通过你敲回车“换行符”才知道你已经输入完毕,它要读取你的输入了。
而你看到的你的输入内容 “k回车” 可不是你写的这个程序的输出,而是操作系统为了让你更直观而把你的所有输入同步显示出来的。
比如:The ending! 这是你程序的唯一输出
而你看到的:k回车 这是操作系统对你的输入同步输出
==============
我记得C语言里有个getch() 函数,你看这个函数读取就不是按照“遇到回车”才开始读取,而是你输入的同时它就读取(同步读取)。
=============
额外送你个底层小知识:
你在程序中的所有输入都会暂时存储在一个系统提供的队列里的,输入函数按照他们自己的读取规则去从这个队列中读取。
举例:
cin.get() 规则:当输入队列中出现“回车(\n)”则开始读取队列中第一个字符。
getch() 规则:只要输入队列中出现“字符”则开始读取队列中的第一个字符。
=======
消化消化吧,下次别加“高手”二字,否则很少有人回复你的。

网友(2):

输入 的应该是 k 后面跟了个 换行符 在缓冲区里面是有这2个东东的