回答
在使用正在讀取的值之前,您需要檢查讀取操作的結果。 >>
操作符返回對正在讀取的流的引用,並且該流包含狀態信息以指示上次操作是成功還是失敗。如果失敗,被讀取的變量的值是不確定的,所以不要使用它。
嘗試這種情況:
int a;
if (cin >> a) // <-- same as: if (!cin.operator>>(a).fail())
{
// read successful, use the int as needed...
}
else
{
// read failed, do not use the int...
}
正確,你忘了給問題的答案 – 4pie0 2014-09-06 20:50:14
@ 0d0a:我確實回答了「什麼會發生「問題 - '>>'會失敗。我沒有回答「將給予什麼價值」的問題。我現在補充說。 – 2014-09-06 21:46:54
當用戶輸入不能被轉換到可變的類型,CIN >>離開變量的值不變。你看到變量看起來像未初始化的,這是零。所以當你輸入一個單詞而不是一個整數時,變量的值是不變的,並且保持未初始化。
POD類型的局部變量未被初始化。它是零的事實是隨機行爲。這將是任何數據已經佔用了變量正在使用的堆棧內存。 – 2014-09-06 21:48:36
這不是問題。
在C++中,WORD
通常是int
的子集。
所以完全WORD
valuerange容易被表示爲int
隨便看看這裏:
WORD datatype in windows environments(這只是兩個字節的值在這裏,int
在比較寬的4個字節在大多數情況下)
,當然還有: Word size in linux
當然,這個答案是有點tongue舌
- 1. 爲什麼在輸入最後一個int數組時輸入java.lang.ArrayIndexOutOfBoundsExeption?
- 2. 會發生什麼,如果我們輸入在需要整數的開關情況下的字符
- 3. 如果超時,會發生什麼情況?
- 4. 當你在瀏覽器中輸入URL時會發生什麼
- 5. fgets在輸入中遇到EOF時會發生什麼?
- 6. 發生病情時會發生什麼情況?
- 7. 在Excel中雙擊單元格時會發生什麼情況?
- 8. 爲什麼angular-cli在不輸入函數結果的情況下生成ngOnInit?
- 9. 如果輸入的數字超過C中數據類型的範圍,會發生什麼情況?
- 10. 如果多個請求涉及單個servlet,會發生什麼情況..?
- 11. 如果在SqlDataReader之前關閉SqlConnection,會發生什麼情況?
- 12. 如果消息在MQ中回滾會發生什麼情況?
- 13. 如果CFile :: Write引發異常會發生什麼情況?
- 14. 如果我的IExceptionPublisher引發異常,會發生什麼情況?
- 15. 如果finally塊引發異常,會發生什麼情況?
- 16. 爲什麼這個表單助手會生成兩個輸入?
- 17. 當我輸入ctrl + alt + t時會發生什麼?
- 18. 如果一個班級有多個類別,會發生什麼情況?
- 19. 如果你傳入一個無效的widgetvar會發生什麼?
- 20. 當您在Javascript中使用someModule導入someModuleName時會發生什麼情況
- 21. 輸入字符串直到輸入一個單詞
- 22. 如果在rootfs上發生內存泄漏,會發生什麼情況?
- 23. 如果我使用printf(「one \ 0two」),會發生什麼情況;?
- 24. TFS - 如果我刪除工作區會發生什麼情況?
- 25. 如果瀏覽器不支持gzip,會發生什麼情況?
- 26. 如果NSURLCache已滿,會發生什麼情況?
- 27. 如果未安裝代碼合同,會發生什麼情況?
- 28. 如果打開失敗會發生什麼情況?
- 29. 如果php.ini丟失,會發生什麼情況?
- 30. 如果不使用Xmx會發生什麼情況?
....你有沒有嘗試過,看看? – 2014-09-06 20:39:13
如果您擔心這種情況,只需將所有內容輸入爲字符串,然後將其轉換爲所需的類型即可。 – Tracer 2014-09-06 20:40:08
@KyleStrand嗨,我試過了,結果爲0.我想知道更詳細的結果背後的機制;) – 2014-09-06 20:44:24