[英]cout weird output
當我嘗試使用cout時,它會輸出一個隨機數,而不是我想要的句子。 沒有編譯器錯誤,程序運行正常。
這是我的代碼:
//question.h
#ifndef _QUESTION_H_
#define _QUESTION_H_
using namespace std;
int first()
{
cout<<"question \n";
return 0;
}
#endif
//main.cpp
#include <iostream>
#include "question.h"
using namespace std;
void main(){
cout<<""<<first<<""<<endl;
cin.ignore();
cin.get();
}
我對編寫自己的頭文件還很陌生,所以我不確定是否做錯了什么,或者Visual Studio是否有問題。
您正在打印函數的地址。 您需要調用它:
cout<<""<<first()<<""<<endl;
^^
如評論中所述,這也不必輸出您期望的結果。 未指定函數參數的順序(也就是一堆函數調用),因此函數輸出可以位於編譯器選擇的任何位置。 要解決此問題,請放置單獨的語句:
cout<<"";
cout<<first(); //evaluated, so output inside first() printed before return value
cout<<""<<endl;
空字符串可能無關緊要,但是當您將可見字符串替換為空字符串時,它將是無關緊要的。
另外,不要使用void main
。 使用int main()
或int main(int, char**)
( 請參見此處 )。 不要using namespace std;
,尤其是在標頭中,因為std
在該語句中包含很多廢話,導致容易造成混亂的沖突( 請參閱此處 )。 最后,選擇一個與實現保留的標識符不沖突的名稱作為您的包含保護。
要打印的函數的地址, first
,而不是調用它。 但是更改函數調用並不能完全解決您的問題,因為first
在內部寫入cout
,然后返回一個數字,該數字將被打印出來,而這似乎並不是您想要的。
如果您想first
扮演<iomanip>
事情的角色,則必須多跳幾圈-閱讀該標頭以了解其工作方式。
使用cout<<""<<first()<<""<<endl;
您需要實際調用該函數,而不是打印其地址
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.