2011-12-02 80 views
2

今天,當我讀了MSDN,我遇到了以下代碼:在MSDN return語句

void draw(int I, long L); 
long sq(int s); 
int main() 
{ 
long y; 
int x; 

y = sq(x); 
draw(x, y); 
return(); 
} 

long sq(int s) 
{ 
return(s * s); 
} 

void draw(int I, long L) 
{ 
/* Statements defining the draw function here */ 
return; 
} 

當然,它沒有工作,所以我改變

回報();

在主功能

返回0;

它能與謹慎。 我對此代碼有兩個問題:

1.爲什麼Microsoft使用return();這是一個錯誤還是其他原因?

2.什麼返回;在draw函數中是什麼意思?我認爲沒有必要,爲什麼它會在函數中存在?

+1

請告訴我們您正在閱讀MSDN上的哪一頁,以便我們也可以看。 –

+0

你能提供一個MSDN文章的鏈接嗎? – Naveen

+0

http://msdn.microsoft.com/en-us/library/sta56yeb.aspx – coqer

回答

2

我同意其他海報,也儘管在抽籤函數的返回是沒有必要在這種情況下,還有在函數的最後一個隱式return語句,它是允許的,確實可以用來儘早退出功能,以避免功能中的進一步代碼,例如

void DoSomeWork(bool someCondition) 
{ 
    if(somecondition == true) 
    { 
    return; 
    } 
// run lots of code 
} 
+0

在您的示例中,返回工作就像loop.do中的中斷,你的意思是? – coqer

+1

是的 - 除了在這種情況下它會退出整個函數,而循環中的中斷只會退出循環,然後繼續執行其餘的功能代碼。 – ChrisBD

+0

非常感謝。我不擅長英語,所以我無法準確表達我的意思。事實上,我的問題僅僅是您的榜樣,我的問題中的代碼無法幫助我解決問題。 – coqer

4
  • 1是的,我認爲這是一個錯誤。
  • 2在空隙返回方法,省略返回語句相當於具有返回作爲該方法的最後一行。
+0

+1 - 我同意毆打我。 – ChrisBD

+0

非常感謝你 – coqer

2

很明顯,我不能說代碼的作者是什麼意思,但對於第一個問題,我認爲這是一個錯誤,作者的意圖是寫return(0);

對於第二個問題,你認爲正確的。 return是不需要的,同樣也不可能回答作者爲什麼把它放在那裏。

+0

+1 - 我同意毆打我。 – ChrisBD

+0

非常感謝您 – coqer