(仅是个人见解,没有权威性)
1、缓冲器:cin即将各种字符存入到缓冲器中,即可想象成一个空间cin先存入,并读取到变量中(读取重点看光标位置,从光标位置之后开始读取)
2、先存入:当执行cin对象时,会将各种字符读入到缓冲器中,包括回车键('\n')、空格键(' ')、tab键('\t');
再读取:cin从第一个非空格、非回车、非tab键的位置开始读取,当与所要读取类型一致时则开始读取,遇上空格、tab键不再读取、回车结束,并且缓冲器中光标定位在空格、tab、回车之前。
3、建议:读入时模拟一下缓冲器状态即可,例如:
【光标用*表示】
缓冲器状态1(初始状态):(空)
缓冲器状态2(执行cin对象时):(1)存入-- jgbgjkg fg
(2)读取:前面tab键内容不读,从j开始读取,故读完后为: jgbgjkg* fg
故a=“jgbgjkg”;
缓冲器状态3(执行完第一个scanf语句): jgbgjkg *fg
故b=' ';
缓冲器状态4(执行完第二个scanf语句): jgbgjkg f*g
故c=‘f’;