簡體   English   中英

奇怪的輸出

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM