我常常看到这样的代码(C,C ++,有时候是Java):
return (value);
我认为这些括号没有任何好处。所以我的问题是,让程序员假设return
是某种函数,返回值作为参数,或者是否真的存在这些括号有意义的情况?
我知道类似的问题已经被问过here,但这只与ANSI C有关。我想知道是否有特定于C ++或Java的方面尚未得到答案。
答案 0 :(得分:18)
关于C
将括号放在有表达式的位置,并且希望返回值为表达式的值。 即使这样也不需要括号。写一些像
这样的东西是完全可以的return x + y;
程序员确实使return (x + y);
更具可读性。
所以,括号是一个意见和实践的问题。
<小时/> 关于C ++
有一个神秘的案例,括号很重要。引用this问题
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))
您可以看到返回的值不同,这是由括号引起的。您可以通过this回答详细了解。
<小时/> 关于java,括号没有任何区别。
编码惯例建议与
一起使用return x + y;
要了解更多信息,请阅读this回答。
<小时/> 注意:我对Java和C ++知之甚少。关于java和C ++的答案中的所有内容都来自其他答案。我这样做是为了巩固三种语言的不同约定。
答案 1 :(得分:4)
从技术上讲,没有理由将赋予return
的表达式括起来。这真是一个品味问题。
也就是说,如果使用布尔运算符,我通常会将return
表达式括起来。由于此类运算符通常被视为while
或if
的一部分,因此除了跳出我的意见外,它更清楚地表明您希望使用该值执行某些操作。
int out_of_range(int x)
{
return ((x < 1) || (x > 10));
}
答案 2 :(得分:2)
主要是遗产。 K&amp; R C Programming Language(1978)用括号表示回报。一些旧的C编译器可能需要这个,但我不确定。
答案 3 :(得分:0)
首先这不是强制性的,您将看到它在返回表达式而非值中的重要性。但是,如果您不使用括号,则您的代码可能不那么容易阅读(特别是在复杂表达式的情况下),并且可能造成混乱。另外,可能会注意到它不是功能(因为括号不是强制性的)。您可能会注意到return 0;
在main()主体末尾的情况。
值得注意的是,没有括号与0一起使用,这证明它不是函数。
因此,使用括号可以使代码对于编译器更具可读性和可理解性。