**:
#includeconst int max = 5;
int main()
說明:
①fish是double型別陣列。
當cin>>fish[i]時,即給double型別陣列中乙個成員賦值時,假如輸入的是數字,則賦值成功;假如輸入的是字母,則該表示式返回false。
於是在while的判斷語句裡,返回false,於是跳過迴圈部分,執行下一段語句。
這說明:讀取失敗的表示式,返回值是false
②當cin>>fish[i]失敗後,fish[i]並沒有被賦值。
在後面,char m;其後的兩行**,都沒有被執行。
原因在於,當cin應該讀取乙個int型別失敗之後,其返回乙個false值,並且被標記乙個錯誤標記(不清楚其作用原理,但實際測試是之後所有cin將不被執行)
這說明:讀取失敗,之後的cin都無法執行。
③假如在cin>>m;之前,加入一行**cin.clear();
那麼在執行**的時候,假如先輸入a,那麼cin>>m;直接讀取了'a'這個字元,於是在cout《這說明:讀取失敗的字元,被留在了輸入快取區之中。
④假如先輸入乙個正確的double型別數字,再輸入乙個不符合要求的字元,返回的結果是並沒有影響陣列fish。
這說明:輸入不符合要求的字元,不影響變數的值。
特別注意:
&& 的執行邏輯為:先判斷左邊,假如為真,再執行右邊。假如返回值為false,那麼直接跳過右邊不再執行。
例如while (i < max&&cin >> fish[i])這句,因為當i為5時,i假如不是這樣的話,那麼雖然i不小於max,但是依然要執行判斷cni>>fish[i],那麼結果就是要再次輸入,然後根據輸入判斷輸入返回值是true還是false。
清空輸入快取區:
假如我們需要程式在讀取到不符合要求的字元時,做出提示,並清除輸入快取區,可以這麼做:
**:
#includeint main()
cout << "你輸入的數字為:" << a << endl;
system("pause");
return 0;
}
輸出:
輸入乙個數字:f
請輸入數字,不要輸入不符合要求的內容
請在這裡重新輸入:ffff
請輸入數字,不要輸入不符合要求的內容
請在這裡重新輸入:3
你輸入的數字為:3
請按任意鍵繼續. . .
說明:
①在這裡,使用了2行**,第一行**cin.clear()用來清除錯誤標記,但是由於之前輸入的字母依然在快取區之內,將被cin>>a再次讀取,於是會陷入無限的死迴圈中。
②在while語句裡,使用!cin,假如cin無法輸入,則返回的是false,而!cin返回的則是true(因為!是true和false轉換),於是執行迴圈
於是,假如無法輸入,則執行while裡面的迴圈語句——提示 + 清除錯誤標誌 + 清除輸入快取(防止cin再次讀入) + 再次輸入。
愛情八十八課,對抗消磨
消磨,就是兩個人的愛情,只剩下一起打哈欠。雖然蕭伯納說 正因為需要個人一起打哈欠,所以才選擇愛情。但卻很少有人能抵達老蕭同志的境界,大部分人在 相看兩相厭 的時刻,就會提出分手。真的,所有愛情都會發展到 消磨 階段,當這個質變來臨時,只有兩條路 要麼結婚 要麼分手。決無其他。不認為 一起打哈欠 是長...
(八十八)VFL語言初步 實現布局
基本的語法 vfl的語法為h 和v 開頭。代表水平和垂直。接下來假設要涉及距離。使用 x x為距離的點數。對於檢視。用 包圍,比如 blueview 以下的語句實現了blueview水平方向左右各距離控制器的邊緣20點 h 20 blueview 20 假設要指定寬高,在檢視名稱之後用圓括號內填入常...
第八十八周學習生活總結
今天是2021年1月16日,上週一回家,這算是在家的第一周了。春招告急 漸行漸遠 去年疫情來學校之前,我們家後面有個和我一般大的男生結婚了,前幾天聽我夥計說還有十幾天我們就要去他們家喝滿月酒了。想想我自己,我連學還沒上完,現在還坐在屋子裡碼字,和我同一年出生的同學就已經在哄孩子了,果真人生都是在漸行...