在我將輸入條件 寫到循環里面,判斷條件寫到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