回答
在使用正在读取的值之前,您需要检查读取操作的结果。 >>
操作符返回对正在读取的流的引用,并且该流包含状态信息以指示上次操作是成功还是失败。如果失败,被读取的变量的值是不确定的,所以不要使用它。
尝试这种情况:
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. 如果输入流发送到输出流会发生什么?
- 2. 如果我们在需要整数的开关情况下输入字符,会发生什么情况C
- 3. 如果写入文件失败,会发生什么情况?
- 4. 当我输入perl并在终端中输入时会发生什么?
- 5. 如果输入流无效将会发生什么
- 6. 为什么在输入最后一个int数组时输入java.lang.ArrayIndexOutOfBoundsExeption?
- 7. 当>>运算符试图输入一个大于变量的值时,会发生什么情况?
- 8. 会发生什么,如果我们输入在需要整数的开关情况下的字符
- 9. 如果输入数据源在HDFS中不断增加,MapReduce作业会发生什么情况?
- 10. 在什么情况下fprintf()不会写入输出文件
- 11. 如果超时,会发生什么情况?
- 12. 您在输入中输入的每个单词都会输入到数组中
- 13. 当你在浏览器中输入URL时会发生什么
- 14. fgets在输入中遇到EOF时会发生什么?
- 15. 发生病情时会发生什么情况?
- 16. 在Excel中双击单元格时会发生什么情况?
- 17. 为什么angular-cli在不输入函数结果的情况下生成ngOnInit?
- 18. 如果输入的数字超过C中数据类型的范围,会发生什么情况?
- 19. 如果我分离已加入的线程会发生什么情况?
- 20. 如果导入语句无法解析,会发生什么情况?
- 21. 如果为单个中断创建多个ISR,会发生什么情况?
- 22. 如果多个请求涉及单个servlet,会发生什么情况..?
- 23. 如果委托不存在,会发生什么情况?
- 24. 如果在SqlDataReader之前关闭SqlConnection,会发生什么情况?
- 25. 如果消息在MQ中回滚会发生什么情况?
- 26. 如果finally块引发异常,会发生什么情况?
- 27. 如果CFile :: Write引发异常会发生什么情况?
- 28. 如果iOS分发证书过期会发生什么情况?
- 29. 如果我的IExceptionPublisher引发异常,会发生什么情况?
- 30. 为什么这个表单助手会生成两个输入?
....你有没有尝试过,看看? – 2014-09-06 20:39:13
如果您担心这种情况,只需将所有内容输入为字符串,然后将其转换为所需的类型即可。 – Tracer 2014-09-06 20:40:08
@KyleStrand嗨,我试过了,结果为0.我想知道更详细的结果背后的机制;) – 2014-09-06 20:44:24