【问题标题】:Is there a benefit/downside to return in an else statement? [duplicate]在 else 语句中返回是否有好处/缺点? [复制]
【发布时间】:2020-09-14 05:16:14
【问题描述】:

版本 1:

int abc(...)
{
    if(a || b || c))
        return 1;
    else
        return 0;
}

版本 2:

int abc(...)
{
    if(a || b || c))
        return 1;

    return 0;
}

有什么不同吗? 哪个代码是正确的?

【问题讨论】:

  • 没有区别,我更喜欢return (a || b || c);
  • 完全没有区别。
  • 区别仅在于哪个版本与您环境中的编码风格/习惯相匹配。很容易在一家公司中,其中任何一个都可能是“错误的”。
  • 在这种情况下没有区别,正如其他人已经说过的那样。但是我想补充一点,在一个更复杂的函数中,您的“版本 2”样式可能会使您难以遵循控制流(例如,当 return 语句深埋在一些嵌套的 if 子句中时)。换句话说:在某些情况下,将所有 return 语句置于同一“级别”(或只有一个 return 语句而不是多个)有助于提高可读性

标签: c if-statement return


【解决方案1】:

有什么区别吗?

没有。

"哪个代码是正确的?"

没有。它们是等价的。请注意,如果上下文没有明确需要 else,请忽略它,因为它是多余的:

Unnecessary 'else' after 'return'. (No-else-return)

注意:链接的问题是针对 Javascript 的,但它与您有同样的担忧。


此外,您的代码可以简化:

int abc (...)
{
    return (a || b || c);
}

如果条件为真1,否则返回0

【讨论】:

    【解决方案2】:

    没有区别,因为在返回 1 时,无论如何都不会执行函数中的其他代码,并且必须选择一个路径。

    我更喜欢后者,因为它涉及的打字更少,但这实际上只是一个偏好问题。

    当然,还有其他选择,比如更简单的:

    return a || b || c;
    

    【讨论】:

      【解决方案3】:

      两种代码变体相同,并且会生成相同的汇编指令。
      但更优雅的方式是:

      int abc(...)
      {
          return (a || b || c);
      }
      

      【讨论】:

        猜你喜欢
        • 2023-02-21
        • 2016-08-14
        • 2021-02-04
        • 2011-04-29
        • 2016-05-10
        • 2021-08-31
        • 2020-05-28
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多