c++中有時需要用迴圈輸入數字,而將非數字輸入設定為乙個錯誤條件,如:
while (cin >> x >> y)
我們知道,cin時istream類的乙個物件,抽取運算子(>>)被設計成使得cin>>x也是乙個istream物件,類運算子是使用函式實現的。使用cin>>x時,程式將呼叫乙個函式,該函式返回乙個istream值。將抽取運算子用於cin>>x物件,也將獲得乙個istream物件。因此,整個while迴圈的測試表示式的最終結果為cin,而cin被用於測試表示式中時,將根據是否成功,被轉換為bool值true或false。例如,cin期望使用者輸入兩個數字,如果使用者輸入了q,cin>>將知道q不是數字,從而將q留在輸入佇列中,並返回乙個被轉換為false的值,導致迴圈結束。
將這種讀取數字的方法與下面更為簡單的方法進行比較:
for (int i = 0; i < limit; i++)
ar[i] = temp;
}
要提前結束該迴圈,可以輸入乙個負值。浙江輸入限制為非負值。這種限制符合某些程式的需要,但通常需要一種不會將某些豎直排除在外的、終止迴圈的方式。將cin>>用作測試條件嚇出了這種限制,因為它接受任何有效的數字輸入。在需要使用迴圈來輸入數字時,如果在輸入迴圈後還需要進行輸入,則必須使用cin.clear()重置輸入,然後還可能需要通過讀取不合法的輸入來丟棄它們。 Python學習 條件控制語句 while迴圈
if 條件表示式 語句塊 塊 判斷a是不是乙個整數a 6 if a 0 print a,是乙個正數 其執行結果為 6 是乙個正數 if 條件表示式 塊1 else 塊2 比較a和b的值的大小a 1 b 2if a b print a的值大於b的值 else print a的值小於b的值 其執行結果為...
C 中while迴圈中cin語句被跳過問題解析
今天在寫 的時候,遇到了乙個非常奇怪的問題 while true if select 2 else 這段 的本意是想要規範輸入,提高容錯率。但是當我輸入乙個字元比如 a 的時候,while迴圈中的cin語句將會被跳過,進入無限的死迴圈。上網查閱了很多資料,發現了問題所在 msdn上cin的定義如下 ...
C 流程控制語句 while語句
using system using system.collections.generic using system.linq using system.text using system.threading.tasks namespace 1009 流程控制語句 while語句 當boolean ...