---------------------------------------------------------------
输入原理:
程序的输入都建有一个缓冲区,即输入缓冲区。一次输入过程是这样的,当一次键盘输入结束时会将输入的数据存入输入缓冲区,而cin函数直接从输入缓冲区中取数据。正因为cin函数是直接从缓冲区取数据的,所以有时候当缓冲区中有残留数据时,cin函数会直接取得这些残留数据而不会请求键盘输入。

//cin读取:
//①忽略开头whitespace字符
//②碰到第一个非whitespace字符,如果是正确类型则读取并继续;
// 如果是非正确类型,则结束读取并call setstate(ios_base::failbit);
//③如果读取到正确类型字符,碰到其他字符(包括whitespace)则结束读取;
如上图显示,遇到1.1时,首先读取1,然后读取到“.”时返回继续循环执行,这时.1留在缓冲区。继续读取时,从"."开始读取出错,退出循环,所以最后结果为3.