我的第一个stackoverflow帖子!
将年龄值输入声明和初始化的int后, 奇怪的事情发生了,价值爆炸了。我测试我的代码,看不出它为什么会发生。重新检查后,我可以看到它是代码的最后一个代码,它对我的int值有所帮助。
我问堆栈流神“为什么”。
我的代码在这里:
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;
}
这似乎是令人讨厌的一点:
'`\n';
这是我得到的输出:
Please enter your name and age
0
et
23
23
Hello, et age 2324586
答案 0 :(得分:8)
'`\n'
这实际上是两个字符,而不仅仅是换行符。另外,您使用单引号,因为char文字的类型为const char
,所以它们仅用于单个字符。
标准说:
包含多个的整数字符常量的值 字符(例如,&#39; ab&#39;),或包含字符或转义序列 不映射到单字节执行字符的是 实现定义的。
因此23之后的数字:24586
是实现定义的部分,它会导致奇怪的输出。使用双引号或'\n'
。