gpt4 book ai didi

c++ - 为什么 cin 会在输入无效的情况下将对应的 int 变量更改为零?

转载 作者:IT老高 更新时间:2023-10-28 12:53:38 25 4
gpt4 key购买 nike

我对 C++ 完全陌生,正在尝试编写一个非常基本的程序,但我在初始化整数时遇到了问题。我已将其简化为一个仍然存在问题的非常小的程序:

#include <iostream>
using namespace std;

int main()
{
cout << "Please enter your age\n";
int age = -1;
cin >> age;
cout <<"\n\n Your age is " << age << "\n\n";
}

我读到如果我尝试输入一个字符串,例如abcage 变量,那么输入应该失败并且值应该被单独留下,因此它应该打印 Your age is -1

但是,当我运行这个程序并输入 abc 时,它会打印 Your age is 0。为什么?

最佳答案

您想要观察的行为在 2011 年发生了变化。在那之前:

If extraction fails (e.g. if a letter was entered where a digit is expected), value is left unmodified and failbit is set.

但是从 C++11 开始:

If extraction fails, zero is written to value and failbit is set. [...]

(来自 cppr 。)

关于c++ - 为什么 cin 会在输入无效的情况下将对应的 int 变量更改为零?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32378911/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com