2011-12-02 79 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