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

时间:2013-04-15 17:57:19

标签: c++

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

原始问题:

我正在学习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。最后一个数字将始终是我选择的任何数字。我弄乱了什么来获得奇怪的输出?感谢非常棒的程序员的帮助。

3 个答案:

答案 0 :(得分:4)

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

更正后的行应为:(更新以反映问题的更新部分)

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

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

答案 1 :(得分:3)

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

应该是

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

答案 2 :(得分:0)

您只需要说std::cout一次。在初始cout之后,您只需将所有输出与<<链接起来,直到语句以;结尾。当您将<<置于代码中时,实际上是将cout打印为转换为void*

std::cout << "Your favorite number is" << iNum << std::endl;应该为你做的伎俩。

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

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