遵循 Bjarne Stroustrup 的《Programming Principles and Practice Using C++》一书,从基础开始学习 C++。这一切都证明是好的,直到这件事发生......
int main()
{
cout << "Please enter your first name and age\n";
string first_name = "???"; // string variable
int age = -1; // integer variable
cin >> first_name >> age; // read a string and then integer
cout << "Hello, " << first_name << " (age " << age << ")\n";
}
现在,正如上面的代码(在第 2 章的输入和类型部分)所暗示的,它输出一个字符串,使我们熟悉一个人的姓名和年龄。由于我已将整数变量 age初始化为-1 ,因此如果我将字符串值输入到age中,程序必须将-1返回到监视器,以防万一。问题是它不会发生在我的电脑上。我已经尝试并编译并运行了该程序 19 次(我确实记得...),但结果始终相同:它输出0 而不是 -1。
例如,如果我输入ABCXYZ 16
,那么输出将是一个漂亮而简单的Hello, ABCXYZ (age 16)。但是如果输入是16 ABCXYZ
,那么输出结果是Hello, ABCXYZ (age 0),我希望它是Hello, ABCXYZ (age -1 )因为字符串ABCXYZ
不会被读入age(它是一个整数变量) 并因此给出初始化值,因为它没有被覆盖。
任何的想法?
PS:我正在使用 Code:Blocks 和 GCC - 8.1.0