2015-03-31 65 views
1

爲什麼這段代碼不打印字母a?主要的C++函數不起作用

#include <iostream>  
#include <stack>   
void a() 
{ 
    std::cout<<"a"; 
} 
int main() 
{ 
    void a(); 
    return 0; 
} 
+7

爲什麼'作廢();',這只是一個'();'。 – NetVipeC 2015-03-31 20:37:47

+0

謝謝NetVipeC – 2015-03-31 20:39:27

回答

8

你不小心聲明函數內部main()而不是調用它。

int main() 
{ 
    void a(); // <-- DECLARES a function, does not call it 
    return 0; 
} 

這裏是修復:

int main() 
{ 
    a(); 
    return 0; 
} 

另外請注意,你可能需要一個換行符:

void a() 
{ 
    std::cout<<"a\n"; 
} 

或者你可以使用std::endl,如果你喜歡打字。

+0

請注意,'std :: endl'會自動刷新輸出,如果經常調用,可能會降低速度。 (在比賽編程中,我們不鼓勵使用它,因爲解決方案的成功可能取決於一毫秒)。 – s3lph 2015-03-31 20:50:18

4

你聲明你的函數兩次:

#include <iostream>  
#include <stack>   
void a() 
{ 
    std::cout<<"a"; 
} 
int main() 
{ 
    void a(); // this is a declaration 
    return 0; 
} 

而是執行此操作:

int main() 
{ 
    a(); // this is a function call, which will execute your function 
    return 0; 
} 
3

它確定qwertyu uytrewq,每個人在開始時都有這樣的問題,主要的是毫不猶豫地質疑。

您的代碼中的主要錯誤是,您聲明的功能,但不是調用它。有三個階段的功能。

  1. 宣言即

    空隙的();

  2. 定義即

    空隙的() { 的std :: COUT < < 「一」; }

  3. 調用即

    的功能的();

現在,在你的程序中的主要錯誤是屬於第三階段(調用函數),你提的功能型也這是知道的減速,所以正確的代碼如下。

#include <iostream>  
#include <stack>   
void a() 
{ 
    std::cout<<"a"; 
} 
int main() 
{ 
a(); 
    return 0; 
} 
0

在您的主要功能:

int main() 
{ 
     // Don't add Void 
    a(); 
    return 0; 
}