我的第一个stackoverflow帖子!
在为声明和初始化的int输入age的值之后,会发生一些奇怪的事情并且值会爆炸.我测试我的代码,看不出它为什么会发生.重新检查后,我可以看到它是代码的最后一个代码,它对我的int值有所帮助.
我问stackoverflow众神"为什么".
我的代码在这里:
int main()
{
cout << "Please enter your name and age\n\n";
string first_name;
int age(0);
cout << age << "\n\n"; // for testing why i get a huge number for age
cin>> first_name >> age;
cout << age << "\n\n"; // for testing why i get a huge number for age
cout << "Hello, " << first_name << " age " << age << '`\n';
keep_window_open(); // window must be closed manually
return 0;
}
Run Code Online (Sandbox Code Playgroud)
这似乎是令人讨厌的一点:
'`\n';
Run Code Online (Sandbox Code Playgroud)
这是我得到的输出:
Please enter your name and age
0
et
23
23
Hello, et age 2324586
Run Code Online (Sandbox Code Playgroud)
'`\n'
Run Code Online (Sandbox Code Playgroud)
这实际上是两个字符,而不仅仅是换行符.另外,您使用单引号,因为char文字属于类型,因此仅用于单个字符const char.
标准说:
包含多个字符(例如,'ab')的整数字符常量的值,或包含不映射到单字节执行字符的字符或转义序列的值是实现定义的.
因此,23:之后的数字24586是实现定义的部分,它在这里引起了奇怪的输出.使用双引号或'\n'.