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