C++ 当需要输入int时,如果输入单词会发生什么?

C++ 当需要输入int时,如果输入单词会发生什么?,c++,C++,我有个问题。假设代码如下所示: int a; cin>>a; 如果我输入一个单词而不是一个整数,会发生什么?什么价值将被赋予一个 提前感谢。在使用正在读取的值之前,您需要检查读取操作的结果。>>运算符返回对正在读取的流的引用,该流包含状态信息,以指示上次操作是成功还是失败。如果失败,则正在读取的变量的值是不确定的,因此不要使用它 试试这个: int a; if (cin >> a) // <-- same as: if (!cin.operator

我有个问题。假设代码如下所示:

    int a;
    cin>>a;
如果我输入一个单词而不是一个整数,会发生什么?什么价值将被赋予一个


提前感谢。

在使用正在读取的值之前,您需要检查读取操作的结果。>>运算符返回对正在读取的流的引用,该流包含状态信息,以指示上次操作是成功还是失败。如果失败,则正在读取的变量的值是不确定的,因此不要使用它

试试这个:

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...
}

在使用正在读取的值之前,需要检查读取操作的结果。>>运算符返回对正在读取的流的引用,该流包含状态信息,以指示上次操作是成功还是失败。如果失败,则正在读取的变量的值是不确定的,因此不要使用它

试试这个:

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...
}

当用户输入无法转换为变量类型时,cin>>将保持变量值不变。您可以看到未初始化的变量是什么样子的,即零。因此,当您输入一个字而不是一个整数时,变量的值将保持不变且未初始化。

当用户输入无法转换为变量类型时,cin>>将保持变量的值不变。您可以看到未初始化的变量是什么样子的,即零。所以,当您输入一个字而不是一个整数时,变量的值保持不变且未初始化。

这不是问题

<>在C++中,单词通常是int .p/p>的子集。 因此,完整的单词valuerange很容易表示为int

看看这里:

这里它只是一个两字节的值,相比之下,int在大多数情况下是4字节宽

当然:

当然,这个答案有点开玩笑,这不是问题

<>在C++中,单词通常是int .p/p>的子集。 因此,完整的单词valuerange很容易表示为int

看看这里:

这里它只是一个两字节的值,相比之下,int在大多数情况下是4字节宽

当然:


当然,这个答案有点开玩笑

。。。。您试过了吗?如果您担心这个问题,只需将所有内容作为字符串输入,然后将其转换为所需的类型。@KyleStrand您好,我试过了,结果是0。我想知道结果背后更详细的机制;。。。。您试过了吗?如果您担心这个问题,只需将所有内容作为字符串输入,然后将其转换为所需的类型。@KyleStrand您好,我试过了,结果是0。我想知道结果背后更详细的机制;正确,你只是忘了回答问题question@0d0a:我确实回答了“将会发生什么”问题->>将失败。我没有回答将给出什么值的问题。我现在已经加上了。对,你只是忘了回答这个问题question@0d0a:我确实回答了“将会发生什么”问题->>将失败。我没有回答将给出什么值的问题。我现在已经添加了这一点。POD类型的局部变量没有初始化。它为零的事实是随机行为。它将是变量正在使用的堆栈内存中已经占用的任何数据。POD类型的局部变量不会初始化。它为零的事实是随机行为。它将是变量正在使用的堆栈内存中已经占用的任何数据。