返回值两边的括号 - 为什么?

2022-09-03 09:49:47

我经常看到这样的代码(C,C++,有时是Java):

return (value);

我看不出这些括号有什么好处。所以我的问题是,程序员是否假设是某种以返回值作为参数的函数,或者这些括号是否真的有意义?return

我知道这里已经提出了类似的问题,但这仅与ANSI C有关。我想知道是否有一些特定于C++或Java的方面尚未得到解答。


答案 1

关于 C

括号放在有表达式的地方,并且希望返回值是表达式的值。即使这样,也不需要括号。写这样的东西是完全可以的

return x + y;

程序员确实使它更具可读性。return (x + y);

因此,加上括号是一个意见和实践问题。


关于C++

有一个神秘的情况,括号很重要。引用这个问题

int var1 = 42;
decltype(auto) func1() { return var1; } // return type is int, same as decltype(var1)
decltype(auto) func1() { return(var1); } // return type is int&, same as decltype((var1))

您可以看到返回值不同,这是由于括号造成的。您可以浏览答案以详细了解。


关于java,括号没有任何区别。

编码约定建议使用

return x + y;

要了解更多信息,请阅读答案。


注意:我对java和C++知之甚少。我的答案中关于java和C++的所有内容都来自其他答案。我这样做是为了巩固这三种语言的不同惯例。

答案 2

从技术上讲,没有理由将给出的表达式括起来。这真的是一个品味问题。return

也就是说,如果表达式使用布尔运算符,我通常会用括号括起来。由于这样的运算符通常被视为 or 的一部分,因此在我看来,除了跳转之外,您还想用该值做一些事情。returnwhileif

int out_of_range(int x)
{
    return ((x < 1) || (x > 10));
}

推荐