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