【问题标题】:what is the difference between return 1 and return(1)?return 1 和 return(1) 有什么区别?
【发布时间】:2015-11-04 11:13:01
【问题描述】:

这两者有什么区别吗?这将程序分为两个不同的点或什么,请提供它的所有细节。 return 是一个语句,那么为什么还要使用return(1)(看起来像一个函数调用),请详细说明“它是如何工作的”?

【问题讨论】:

  • 虽然括号在return中是多余的,但有些人认为它们在其他地方会有所不同,see here

标签: c function return


【解决方案1】:

它们是等价的。类似于:

1 + 2

相当于:

(1) + (2)

后者是合法的,但括号没用。

【讨论】:

    【解决方案2】:

    在运行时根本不应该有任何功能或性能差异,因为您要么返回表达式1,要么返回表达式(1),这是一回事。

    这与以下情况没有什么不同,语句应该具有相同的运行时间成本:

    int a = 42;
    int b = (42);
    

    编译时可能存在最小差异,因为编译器必须评估翻译单元中的更多字符,但如果它很明显,我会非常感到惊讶。

    【讨论】:

    • 所以我认为 () 只有在返回之前进行一些计算以提高代码的可读性时才可取。
    • @Lea-rner,是的,但是您将永远整个 表达式之外需要它。换句话说,虽然 return 3 * (7 + 12) 对于您想要覆盖评估顺序的表达式可能是必需的,但 return (3 * (7 + 12)) 永远不会。
    【解决方案3】:

    绝对没有区别:在此上下文中的括号并不意味着函数调用,它们是用于强制执行特定评估顺序的常规括号(此处完全没有必要)。

    C 允许程序员在任何表达式周围放置括号,无论出于何种原因,只要括号平衡,编译器就会以相同的方式解释 return 的两个版本:

    return (((((1)))));
    

    【讨论】:

      猜你喜欢
      • 2014-05-01
      • 2014-05-24
      • 2011-08-26
      • 1970-01-01
      • 1970-01-01
      • 2013-08-25
      • 1970-01-01
      • 1970-01-01
      • 2013-12-25
      相关资源
      最近更新 更多