Int 输出与给定值不对应

Int output does not correspond given value

本文关键字:输出 Int      更新时间:2023-10-16

我的第一篇堆栈溢出帖子!

在声明和初始化的 int 中输入 age 值后,奇怪的事情发生了,价值爆炸了。我测试了我的代码,但看不出为什么会发生这种情况。重新检查后,我可以看到这是对我的 int 值执行某些操作的最后一段代码。

我问堆积之神"为什么"。

我的代码在这里:

int main()
{
    cout << "Please enter your name and agenn";
    string first_name;
    int age(0);
    cout << age << "nn";  // for testing why i get a huge number for age
    cin>> first_name >> age;
    cout << age << "nn";  // 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
'`n'

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

该标准说:

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

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