我有一个问题。假设代码如下:
int a;
cin>>a;
如果输入单词而不是整数,会发生什么? a
会给予什么价值?
提前致谢。
答案 0 :(得分:4)
在使用正在读取的值之前,您需要检查读取操作的结果。 >>
运算符返回对正在读取的流的引用,该流包含状态信息以指示上一个操作是成功还是失败。如果失败,则读取的变量的值是不确定的,因此不要使用它。
试试这个:
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...
}
答案 1 :(得分:1)
当用户输入无法转换为变量类型时,cin&gt;&gt;保持变量的值不受影响。您正在查看变量看起来像未初始化的内容,即零。因此,当您输入单词而不是整数时,变量的值不会受到影响并保持未初始化状态。
答案 2 :(得分:0)
这不是问题。
在C ++中,WORD
通常是int
的子集。
因此,完整的WORD
值范围很容易表示为int
看看这里:
WORD datatype in windows environments(这里只是一个双字节值,int
相比之下,大多数情况下是4字节宽)
当然,这个答案有些诙谐。