在我将输入条件 写到循环里面,判断条件写到while中时,一旦输入错误,出现死循环。
如while(!(a==0 && b==0 && c==0))
我修改之后cin>>a>>b>>c写入while判断中,即使输入错误了,cin由于读不到应有的类型输入,循环不成立,不会死循环。
在理解 cin 功能时,不得不提标准输入缓冲区。当我们从键盘输入字符串的时候需要敲一下回车键才能够将这个字符串送入到缓冲区中,那么敲入的这个回车键(\r)会被转换为一个换行符(\n),这个换行符也会被存储在 cin 的缓冲区中并且被当成一个字符来计算!比如我们在键盘上敲下了 123456 这个字符串,然后敲一下回车键(\r)将这个字符串送入了缓冲区中,那么此时缓冲区中的字节个数是 7 ,而不是 6。
cin 读取数据也是从缓冲区中获取数据,缓冲区为空时,cin 的成员函数会阻塞等待数据的到来,一旦缓冲区中有数据,就触发 cin 的成员函数去读取数据
当采用第一种错误计数时,while条件会一直成立,可里面cin会一直读不到要输入的正确的类型,而让程序死循环,非常危险,尽量的将cin写入while条件中
2020-03-19