非常基本的c++程序中的意外输出

Unexpected output in VERY basic C++ program

本文关键字:意外 输出 程序 c++ 非常      更新时间:2023-10-16

编辑:我的最后一个问题是我如何在我放的数字之前得到一个空格,然后放一个。在句末?

原始问题:

我正在学习c++。这是我的代码

#include <iostream>
int main() {
    int iNum;
    std::cout << "Please enter your favorite number" << std::endl;
    std::cin >> iNum;
    std::cout << "Your favorite number is" << std::cout << iNum << std::endl;
    return 0;
}

我去掉了空格以便于阅读。我希望输出是你最喜欢的数字是4如果我被要求输入4。而是说,你最喜欢的号码是51abc3e84。最后一个数总是我选的那个数。为了得到奇怪的输出,我搞砸了什么?

在检索输入后删除第二个std::cout,这在程序中没有任何用处。

修改后的行应该是:(更新以反映问题的更新部分)

std::cout << "Your favorite number is " << iNum << "." << std::endl;

当您将std::cout发送到流中时,您实际上让std::cout对象尝试将自己处理为要打印的东西。在这种情况下,它似乎将其解释为十六进制表示的32位值(可能是std::cout的内存位置)。输出中"51ABC3E8"末尾的"4"是从输入中获取的变量值。

 std::cout << "Your favorite number is" << std::cout << iNum << std::endl;
                                        //^^You are printing cout
应该

std::cout << "Your favorite number is"  << iNum << std::endl;

你只需要说一次std::cout。在初始的cout之后,只需将所需的所有输出与<<链接起来,直到语句以;结束。当你把它放在<<后面时,你实际上是将cout转换为void*

std::cout << "Your favorite number is" << iNum << std::endl;应该可以满足你的要求。

编辑:如果你想要一个空格和句号,只要把它们放在你的输出行:

std::cout << "Your favorite number is " << iNum << '.' << std::endl;