【问题标题】:A return statement in MSDNMSDN中的return语句
【发布时间】:2011-12-02 09:21:17
【问题描述】:

今天在看MSDN的时候,遇到如下代码:

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.为什么微软使用return();这只是一个错误?还是其他原因?

2. 返回什么;在draw函数中是什么意思?我认为没有必要,为什么它存在于函数中?

【问题讨论】:

  • 请告诉我们您正在阅读 MSDN 上的哪个页面,以便我们也可以查看。
  • 能否提供 MSDN 文章的链接?
  • 哈哈,MSDN 不是因为不修复错误而总是“修复”URL 而出名吗? :-)

标签: c msdn return


【解决方案1】:
  • 1 是的,我认为这是一个错误。
  • 2 在 void 返回方法中,省略 return 语句相当于将 return 作为方法的最后一行。

【讨论】:

    【解决方案2】:

    我同意其他发帖者的观点,即使在这种情况下,draw 函数中的 return 不是必需的,因为函数末尾有一个隐式 return 语句,它是允许的,并且确实可以用于退出提前一个函数,这样可以避免函数中的进一步代码,例如

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

    【讨论】:

    • 在您的示例中,return 的工作方式类似于循环中的中断。您是说这个吗?
    • 是的 - 除了在这种情况下它会退出整个函数,而循环中的中断只会退出循环,然后继续执行其余的函数代码。
    • 非常感谢。我英语不好,所以无法准确表达我的意思。实际上,我的问题只是你的例子,我问题中的代码无法帮助我解决我的问题。
    【解决方案3】:

    显然我不能说出代码作者的意思,但对于第一个问题,我认为这是一个错误,作者的意思是写return(0);

    关于你认为正确的第二个问题。 return 是不需要的,同样无法回答作者为什么将它放在那里。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-02-02
      • 2016-12-29
      • 2017-02-05
      • 2018-07-08
      • 2013-06-04
      • 2017-11-04
      • 2014-02-28
      • 2011-04-15
      相关资源
      最近更新 更多