返回值周围的括号-为什么? 经常看到这样的代码(C,C++和有时java):

返回值周围的括号-为什么? 经常看到这样的代码(C,C++和有时java):,java,c++,c,Java,C++,C,我看不出这些括号有什么好处。所以我的问题是,程序员是否假设return是一种返回值作为参数的函数,还是真的存在这些括号有意义的情况 我知道已经有人问过类似的问题,但这只与ANSI C有关。不知C++或java中有哪些方面没有得到解答。 关于c 括号放在有表达式且希望返回值为该表达式值的位置即使这样,也不需要括号。这样写完全可以 return x + y; 程序员确实让它返回(x+y)以使其更具可读性 因此,插入括号是意见和实践的问题 关于C++ 有一个神秘的例子,括号很重要。引述问题 您可以

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

我知道已经有人问过类似的问题,但这只与ANSI C有关。不知C++或java中有哪些方面没有得到解答。

<>关于c

括号放在有表达式且希望返回值为该表达式值的位置即使这样,也不需要括号。这样写完全可以

return x + y;
程序员确实让它
返回(x+y)以使其更具可读性

因此,插入括号是意见和实践的问题


关于C++

有一个神秘的例子,括号很重要。引述问题

您可以看到返回的值是不同的,这是由于括号造成的。你们可以通过阅读答案来了解细节


对于java,括号没有任何区别

编码惯例建议使用

return x + y;
要了解更多,请阅读答案



<强>注释> <强> >我对java和C++了解不多。我的回答中关于java和C++的所有内容都是从其他答案中提取出来的。我这样做是为了整合这三种语言的不同约定。

从技术上讲,没有理由在
return
中插入表达式。这真的是口味的问题

也就是说,如果表达式使用布尔运算符,我通常会将
return
表达式括起来。由于这类运算符通常被视为
while
if
的一部分,因此在我看来,更清楚的是,除了跳跃之外,您还想使用该值做一些事情

int out_of_range(int x)
{
    return ((x < 1) || (x > 10));
}
int out_of_范围(int x)
{
返回((x<1)|(x>10));
}

大部分是遗留的。K&R C编程语言(1978)使用括号显示返回。一些旧的C编译器可能需要这个,但我不确定

首先,这不是强制性的,您将看到它在返回表达式而不是值方面的重要性。但如果不使用括号,代码可能不太容易阅读(特别是在复杂表达式的情况下),并且可能会造成混淆。另外,可能需要注意的是,它不是一个函数(因为括号不是必需的)位于main()主体的末尾。 这里值得注意的是,0没有使用括号,这证明它不是一个函数。
因此,括号用于使编译器更易于阅读和理解代码

总结:“所以,放括号是意见和实践的问题。”。伟大的“为了让它更具可读性”-不确定,它也可能会产生误导,因为它看起来像一个函数调用。@FrankPuffer,不,它不是。这个问题肯定是个怪人。在OP的第一部分,看起来他需要阅读返回语句,以及为什么和在哪里需要括号,但后来他只是不同意答案/评论。我读了他所有的评论后删除了我的答案。@Michi:很久以后,我才注意到这条评论。在发布这个问题时,我非常清楚,除了一些非常深奥的案例外,这些括号是不需要的。我仍然想更好地理解程序员为什么使用它们,无论是出于技术原因还是其他原因。这难道不完全合法吗?例如,我想知道当我在代码评审中遇到这个构造时如何反应。这里的回答和评论为我提供了一些有用的信息。
return
是一个语句,括号(“括号”用于
[]
)是无用的。从语法上讲,它们是表达的一部分,而不是陈述的一部分。现代的编码风格通常不鼓励使用它们。@WillBriggs:嗯,从语法上讲是这样的。这可能与代码分析非常相关。C++中有一个有趣的例子,其中<代码>返回< /COD>括号改变了含义:“EngalPuffffer-C、C++和java的可能复制是非常不同的语言。你必须针对每种语言问这个问题才能得到正确的答案。你看,哈里斯试图通过一次写3个答案来解决这个问题。但这在sx度量中并不完美。
return x + y;
int out_of_range(int x)
{
    return ((x < 1) || (x > 10));
}