当int age=-1,并且我使用cin(即asdf)输入了一个无效的age输入时,为什么age返回为0而不是-1

  • 本文关键字:age int 无效 返回 一个 cin asdf c++
  • 更新时间 :
  • 英文 :


使用64位Ubuntu 22.04.1 LTS |使用Eclipse IDE版本:2022-06(4.24.0(内部版本id:20220609-1112|使用Linux GCC工具链构建|Stroustrup教科书的PDF代码

代码:

#include "std_lib_facilities.h"
int main()
{
int age = -1;                   // program would still function if var was not assigned
string first_name = "???";      // a value, we are giving them values so that an error
// message of sorts is implemented by doing so
cout << "Please enter your first name and agenie. Quagmire 69n";
cin >> first_name;
cin >> age;
cout << "Hello, " << first_name << " (age " << age << ")n";
return 0;
}

在我的情况下,在构建和运行之后,我输入420 as;ldfkj

程序的输出为Hello, 420 (age 0)

为什么输出0而不是int age = -1;指定的-1

编辑:这本教科书是错的,还是我误解了?教科书似乎认为-1应该归还。这本书写于2014年。

(下面的奖励问题(

如何为first_name输入错误的输入?我试过在数字键、Zalgo甚至表情符号上使用特殊字符,它们似乎都能正确输出。

C++98有一个错误,这本书可能是在2011年末、2012年初写的,作者没有使用C++11编译器进行测试。

cin >> first_name;

这将从输入中读取字符,直到非空白后面跟着空白为止。

cin >> age;

这会将数字读取为整数,如果第一个字符不是数字,则读取0。

奖金问题:表情符号、特殊字符等都是非空白字符。因此,它们将被读入字符串。但是,您可以通过键入字符来锁定程序,直到您的终端不再接受为止。这时它只会发出嘟嘟声。在这一点上,你甚至无法打出回击。;-(

最新更新