C ++输出奇怪

时间:2017-02-07 22:53:53

标签: c++ output

#include <iostream>
using namespace std;

int main()

{
  cout << "*****************************************" <<
    endl <<
    cout << "Hello All!" <<
    endl <<
    cout << "Welcome to CSCI-111!!!!!" <<
    endl <<
    cout << "It is great to see you!" <<
    endl <<
    cout << "*****************************************" ;

  return 0;

}

第一个cout很好并且输出正确,但是之后的每个cout在引号(0x600e88)之前输出一个奇怪的数字串,我的输出最终看起来像这样

***************************************** 
0x600e88Hello All! 
0x600e88Welcome to CSCI-111!!!!! 
0x600e88It is great to see you! 
0x600e88*****************************************  

2 个答案:

答案 0 :(得分:6)

您目前拥有的内容:

cout << "blah" << endl << cout << "blah" << endl << cout << ... ;
//                        ^~~~                      ^~~~

您正在打印cout本身,这就是为您提供奇怪的数字。

你应该拥有什么:

cout << "blah" << endl;
cout << "blah" << endl;

或者:

cout << "blah" << endl
     << "blah" << endl;

答案 1 :(得分:5)

终止endl s:

cout << "*****************************************" << endl;
cout << "Hello All!" << endl;
cout << "Welcome to CSCI-111!!!!!" << endl;
cout << "It is great to see you!" << endl;
cout << "*****************************************" ;

或删除多余的cout s:

cout << "*****************************************" << endl <<
    "Hello All!" << endl <<
    "Welcome to CSCI-111!!!!!" << endl <<
    "It is great to see you!" << endl <<
    "*****************************************" ;

否则,表达式会继续,并且您自己打印cout,并且因为它是一个函数指针,所以您打印它的地址(0x600e88)。

在序列中

cout << "Something" << endl << cout;

第一个cout表示ostream的开头(向控制台打印 out 的流),而第二个是要输出的流的一部分,并被视为指针,输出他包含的内容 - 调用cout的数字地址。