Int输出与给定值

时间:2017-06-20 18:04:38

标签: c++ int

我的第一个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

1 个答案:

答案 0 :(得分:8)

'`\n'

这实际上是两个字符,而不仅仅是换行符。另外,您使用单引号,因为char文字的类型为const char,所以它们仅用于单个字符。

标准说:

  

包含多个的整数字符常量的值   字符(例如,&#39; ab&#39;),或包含字符或转义序列   不映射到单字节执行字符的是   实现定义的。

因此23之后的数字:24586是实现定义的部分,它会导致奇怪的输出。使用双引号或'\n'